mirror of
https://github.com/json-c/json-c.git
synced 2026-04-13 01:09:06 +08:00
Merge pull request #614 from stoeckmann/format
Prevent truncation on custom double formatters.
This commit is contained in:
@@ -969,7 +969,8 @@ static int json_object_double_to_json_string_format(struct json_object *jso, str
|
|||||||
p = q;
|
p = q;
|
||||||
}
|
}
|
||||||
/* drop trailing zeroes */
|
/* drop trailing zeroes */
|
||||||
*(++p) = 0;
|
if (*p != 0)
|
||||||
|
*(++p) = 0;
|
||||||
size = p - buf;
|
size = p - buf;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -26,7 +26,7 @@ static int custom_serializer(struct json_object *o, struct printbuf *pb, int lev
|
|||||||
|
|
||||||
int main(int argc, char **argv)
|
int main(int argc, char **argv)
|
||||||
{
|
{
|
||||||
json_object *my_object;
|
json_object *my_object, *my_sub_object;
|
||||||
|
|
||||||
MC_SET_DEBUG(1);
|
MC_SET_DEBUG(1);
|
||||||
|
|
||||||
@@ -67,5 +67,17 @@ int main(int argc, char **argv)
|
|||||||
json_object_put(my_object);
|
json_object_put(my_object);
|
||||||
assert(freeit_was_called);
|
assert(freeit_was_called);
|
||||||
|
|
||||||
|
// ============================================
|
||||||
|
|
||||||
|
my_object = json_object_new_object();
|
||||||
|
my_sub_object = json_object_new_double(1.0);
|
||||||
|
json_object_object_add(my_object, "double", my_sub_object);
|
||||||
|
printf("Check that the custom serializer does not include nul byte:\n");
|
||||||
|
json_object_set_serializer(my_sub_object, json_object_double_to_json_string, "%125.0f,", NULL);
|
||||||
|
printf("my_object.to_string(custom serializer)=%s\n",
|
||||||
|
json_object_to_json_string_ext(my_object, JSON_C_TO_STRING_NOZERO));
|
||||||
|
|
||||||
|
json_object_put(my_object);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -8,3 +8,5 @@ Check that the custom serializer isn't free'd until the last json_object_put:
|
|||||||
my_object.to_string(custom serializer)=Custom Output
|
my_object.to_string(custom serializer)=Custom Output
|
||||||
Next line of output should be from the custom freeit function:
|
Next line of output should be from the custom freeit function:
|
||||||
freeit, value=123
|
freeit, value=123
|
||||||
|
Check that the custom serializer does not include nul byte:
|
||||||
|
my_object.to_string(custom serializer)={"double": 1.}
|
||||||
|
|||||||
Reference in New Issue
Block a user