Issue #539: reset the serializer when json_object_set_double() is called and the current serializer is the one that json_object_new_double_s() used.

This commit is contained in:
Eric Haszlakiewicz
2020-02-13 03:11:10 +00:00
parent 0ffdbb2395
commit ae13ca524a
3 changed files with 11 additions and 2 deletions

View File

@@ -999,6 +999,8 @@ int json_object_set_double(struct json_object *jso,double new_value){
if (!jso || jso->o_type!=json_type_double) if (!jso || jso->o_type!=json_type_double)
return 0; return 0;
jso->o.c_double=new_value; jso->o.c_double=new_value;
if (jso->_to_json_string == &json_object_userdata_to_json_string)
json_object_set_serializer(jso, NULL, NULL, NULL);
return 1; return 1;
} }

View File

@@ -46,6 +46,12 @@ int main(int argc, char **argv)
json_object_put(tmp); json_object_put(tmp);
printf("STRING PASSED\n"); printf("STRING PASSED\n");
tmp = json_tokener_parse("1.234");
json_object_set_double(tmp, 12.3);
const char *serialized = json_object_to_json_string(tmp);
fprintf(stderr, "%s\n", serialized);
assert(strncmp(serialized, "12.3", 4)==0);
printf("PARSE AND SET PASSED\n");
printf("PASSED\n"); printf("PASSED\n");
return 0; return 0;

View File

@@ -3,4 +3,5 @@ INT64 PASSED
BOOL PASSED BOOL PASSED
DOUBLE PASSED DOUBLE PASSED
STRING PASSED STRING PASSED
PARSE AND SET PASSED
PASSED PASSED