mirror of
https://github.com/json-c/json-c.git
synced 2026-04-09 23:39:06 +08:00
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:
@@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -45,8 +45,14 @@ int main(int argc, char **argv)
|
|||||||
assert (strcmp(json_object_get_string(tmp),SHORT)==0);
|
assert (strcmp(json_object_get_string(tmp),SHORT)==0);
|
||||||
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;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,4 +3,5 @@ INT64 PASSED
|
|||||||
BOOL PASSED
|
BOOL PASSED
|
||||||
DOUBLE PASSED
|
DOUBLE PASSED
|
||||||
STRING PASSED
|
STRING PASSED
|
||||||
|
PARSE AND SET PASSED
|
||||||
PASSED
|
PASSED
|
||||||
|
|||||||
Reference in New Issue
Block a user