mirror of
git://git.sv.gnu.org/emacs.git
synced 2026-02-23 05:17:35 +00: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);
|
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)
|
if (htmlp)
|
||||||
doc = htmlReadMemory ((char *)buftext,
|
doc = htmlReadMemory ((char *)buftext,
|
||||||
iend_byte - istart_byte, burl, "utf-8",
|
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_NONET|XML_PARSE_NOWARNING|
|
||||||
XML_PARSE_NOBLANKS |XML_PARSE_NOERROR);
|
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
|
/* If the assertion below fails, malloc was called inside the above
|
||||||
libxml2 functions, and ralloc.c caused relocation of buffer text,
|
libxml2 functions, and ralloc.c caused relocation of buffer text,
|
||||||
so we could have read from unrelated memory. */
|
so we could have read from unrelated memory. */
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue