mirror of
https://github.com/json-c/json-c.git
synced 2026-11-05 21:20:16 +08:00
AIX: Fix test_json_patch NULL pointer passed to printf
Some test_json_patch test cases have neither a comment field and
nor a error field, so the expression
"comment ? comment : error_s" evaluates to NULL.
The printf statement
printf("Testing '%s', ...", comment ? comment : error_s, ...);
passes NULL as a %s argument. GNU libc handles this gracefully and prints (null).
On AIX, passing NULL for %s prints an empty string, causing the test output
to differ from the expected file.
The fix adds a simple macro:
define STR_OR_NULL(s) ((s) ? (s) : "(null)")
that retruns "(null)" when s is NULL.
This commit is contained in:
1 parent
a559871165
commit
52f57ec18a
1 file changed
+6
-1
@@ -16,6 +16,11 @@
|
||||
#define PATH_MAX 256
|
||||
#endif
|
||||
|
||||
/* printf("%s", NULL) prints emptry string on AIX.
|
||||
* Use this macro to guard all printf %s args that may be NULL*/
|
||||
#define STR_OR_NULL(s) ((s) ? (s) : "(null)")
|
||||
|
||||
|
||||
void test_json_patch_op(struct json_object *jo)
|
||||
{
|
||||
const char *comment = json_object_get_string(json_object_object_get(jo, "comment"));
|
||||
@@ -29,7 +34,7 @@ void test_json_patch_op(struct json_object *jo)
|
||||
int ret;
|
||||
|
||||
printf("Testing '%s', doc '%s' patch '%s' : ",
|
||||
comment ? comment : error_s,
|
||||
STR_OR_NULL(comment ? comment : error_s),
|
||||
json_object_get_string(doc),
|
||||
json_object_get_string(patch));
|
||||
if (!error && !have_expected) {
|
||||
|
||||
Reference in new issue
Block a user