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:
parent
5f32ba5015
commit
3eac378c96
1 changed files with 7 additions and 2 deletions
|
|
@ -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));
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue