1
Fork 0
mirror of git://git.sv.gnu.org/emacs.git synced 2026-01-09 05:01:02 -08:00

Avoid segfaults in jason-serialize on MS-Windows

* src/json.c (Fjson_serialize): Free the string with
'json_free', not 'free', since it was allocated with
'json_malloc'.  (Bug#32381)
This commit is contained in:
Eli Zaretskii 2018-08-07 17:28:35 +03:00
parent 5f32ba5015
commit 3eac378c96

View file

@ -159,7 +159,12 @@ init_json_functions (void)
than PTRDIFF_MAX. Such objects wouldn't play well with the rest of
Emacs's codebase, which generally uses ptrdiff_t for sizes and
indices. The other functions in this file also generally assume
that size_t values never exceed PTRDIFF_MAX. */
that size_t values never exceed PTRDIFF_MAX.
In addition, we need to use a custom allocator because on
MS-Windows we replace malloc/free with our own functions, see
w32heap.c, so we must force the library to use our allocator, or
else we won't be able to free storage allocated by the library. */
static void *
json_malloc (size_t size)
@ -605,7 +610,7 @@ usage: (json-serialize OBJECT &rest ARGS) */)
char *string = json_dumps (json, JSON_COMPACT);
if (string == NULL)
json_out_of_memory ();
record_unwind_protect_ptr (free, string);
record_unwind_protect_ptr (json_free, string);
return unbind_to (count, json_build_string (string));
}