diff --git a/src/libckpool.h b/src/libckpool.h index 98d3e54c..23c26c74 100644 --- a/src/libckpool.h +++ b/src/libckpool.h @@ -313,25 +313,39 @@ static inline void json_strdup(char **buf, json_t *val, const char *key) *buf = strdup(json_string_value(json_object_get(val, key))); } -static inline void json_set_string(json_t *val, const char *key, const char *str) +/* Helpers for setting a field will check for valid entry and print an error + * if it is unsuccessfully set. */ +static inline void _json_set_string(json_t *val, const char *key, const char *str, + const char *file, const char *func, const int line) { - json_object_set_new_nocheck(val, key, json_string(str)); + if (unlikely(json_object_set_new_nocheck(val, key, json_string(str)))) + LOGERR("Failed to set json string from %s %s:%d", file, func, line); } +#define json_set_string(val, key, str) _json_set_string(val, key, str, __FILE__, __func__, __LINE__) -static inline void json_set_int(json_t *val, const char *key, int64_t integer) +static inline void _json_set_int(json_t *val, const char *key, int64_t integer, + const char *file, const char *func, const int line) { - json_object_set_new_nocheck(val, key, json_integer(integer)); + if (unlikely(json_object_set_new_nocheck(val, key, json_integer(integer)))) + LOGERR("Failed to set json int from %s %s:%d", file, func, line); } +#define json_set_int(val, key, integer) _json_set_int(val, key, integer, __FILE__, __func__, __LINE__) -static inline void json_set_double(json_t *val, const char *key, double real) +static inline void _json_set_double(json_t *val, const char *key, double real, + const char *file, const char *func, const int line) { - json_object_set_new_nocheck(val, key, json_real(real)); + if (unlikely(json_object_set_new_nocheck(val, key, json_real(real)))) + LOGERR("Failed to set json double from %s %s:%d", file, func, line); } +#define json_set_double(val, key, real) _json_set_double(val, key, real, __FILE__, __func__, __LINE__) -static inline void json_set_bool(json_t *val, const char *key, bool boolean) +static inline void _json_set_bool(json_t *val, const char *key, bool boolean, + const char *file, const char *func, const int line) { - json_object_set_new_nocheck(val, key, json_boolean(boolean)); + if (unlikely(json_object_set_new_nocheck(val, key, json_boolean(boolean)))) + LOGERR("Failed to set json bool from %s %s:%d", file, func, line); } +#define json_set_bool(val, key, boolean) _json_set_bool(val, key, boolean, __FILE__, __func__, __LINE__) void rename_proc(const char *name); void create_pthread(pthread_t *thread, void *(*start_routine)(void *), void *arg);