mirror of
git://git.sv.gnu.org/emacs.git
synced 2025-12-24 06:20:43 -08:00
Avoid relocating buffers while libxml2 reads its text
* src/xml.c (parse_region) [REL_ALLOC]: Freeze the ralloc arena while libxml2 reads the current buffer's text. (Bug#24764)
This commit is contained in:
parent
1b3fc8ab49
commit
71ca4f6a43
1 changed files with 8 additions and 0 deletions
|
|
@ -202,6 +202,11 @@ parse_region (Lisp_Object start, Lisp_Object end, Lisp_Object base_url,
|
|||
}
|
||||
|
||||
buftext = BYTE_POS_ADDR (istart_byte);
|
||||
#ifdef REL_ALLOC
|
||||
/* Prevent ralloc.c from relocating the current buffer while libxml2
|
||||
functions below read its text. */
|
||||
r_alloc_inhibit_buffer_relocation (1);
|
||||
#endif
|
||||
if (htmlp)
|
||||
doc = htmlReadMemory ((char *)buftext,
|
||||
iend_byte - istart_byte, burl, "utf-8",
|
||||
|
|
@ -214,6 +219,9 @@ parse_region (Lisp_Object start, Lisp_Object end, Lisp_Object base_url,
|
|||
XML_PARSE_NONET|XML_PARSE_NOWARNING|
|
||||
XML_PARSE_NOBLANKS |XML_PARSE_NOERROR);
|
||||
|
||||
#ifdef REL_ALLOC
|
||||
r_alloc_inhibit_buffer_relocation (0);
|
||||
#endif
|
||||
/* If the assertion below fails, malloc was called inside the above
|
||||
libxml2 functions, and ralloc.c caused relocation of buffer text,
|
||||
so we could have read from unrelated memory. */
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue