X-Git-Url: https://code.delx.au/gnu-emacs/blobdiff_plain/2311d8e5a62b8b6dd7dde45b4b8059d443e2abac..01fcc3a532872b29784a4d888ab9cc1aef0eed01:/src/xml.c
diff --git a/src/xml.c b/src/xml.c
index 786f0cd881..5a52b0c2a1 100644
--- a/src/xml.c
+++ b/src/xml.c
@@ -1,5 +1,5 @@
/* Interface to libxml2.
- Copyright (C) 2010-2012 Free Software Foundation, Inc.
+ Copyright (C) 2010-2013 Free Software Foundation, Inc.
This file is part of GNU Emacs.
@@ -20,12 +20,12 @@ along with GNU Emacs. If not, see . */
#ifdef HAVE_LIBXML2
-#include
#include
#include
#include
#include "lisp.h"
+#include "character.h"
#include "buffer.h"
@@ -73,7 +73,7 @@ libxml2_loaded_p (void)
#define fn_xmlCleanupParser xmlCleanupParser
#define fn_xmlCheckVersion xmlCheckVersion
-static inline int
+static int
libxml2_loaded_p (void)
{
return 1;
@@ -82,7 +82,7 @@ libxml2_loaded_p (void)
#endif /* !WINDOWSNT */
static int
-init_libxml2_functions (Lisp_Object libraries)
+init_libxml2_functions (void)
{
#ifdef WINDOWSNT
if (libxml2_loaded_p ())
@@ -91,7 +91,7 @@ init_libxml2_functions (Lisp_Object libraries)
{
HMODULE library;
- if (!(library = w32_delayed_load (libraries, Qlibxml2_dll)))
+ if (!(library = w32_delayed_load (Qlibxml2_dll)))
{
message ("%s", "libxml2 library not found");
return 0;
@@ -180,8 +180,7 @@ parse_region (Lisp_Object start, Lisp_Object end, Lisp_Object base_url, int html
xmlDoc *doc;
Lisp_Object result = Qnil;
const char *burl = "";
- EMACS_INT bytes;
- EMACS_INT istart, iend;
+ ptrdiff_t istart, iend, istart_byte, iend_byte;
fn_xmlCheckVersion (LIBXML_VERSION);
@@ -189,9 +188,11 @@ parse_region (Lisp_Object start, Lisp_Object end, Lisp_Object base_url, int html
istart = XINT (start);
iend = XINT (end);
+ istart_byte = CHAR_TO_BYTE (istart);
+ iend_byte = CHAR_TO_BYTE (iend);
if (istart < GPT && GPT < iend)
- move_gap (iend);
+ move_gap_both (iend, iend_byte);
if (! NILP (base_url))
{
@@ -199,17 +200,15 @@ parse_region (Lisp_Object start, Lisp_Object end, Lisp_Object base_url, int html
burl = SSDATA (base_url);
}
- bytes = CHAR_TO_BYTE (iend) - CHAR_TO_BYTE (istart);
-
if (htmlp)
- doc = fn_htmlReadMemory ((char *) BYTE_POS_ADDR (CHAR_TO_BYTE (istart)),
- bytes, burl, "utf-8",
+ doc = fn_htmlReadMemory ((char *) BYTE_POS_ADDR (istart_byte),
+ iend_byte - istart_byte, burl, "utf-8",
HTML_PARSE_RECOVER|HTML_PARSE_NONET|
HTML_PARSE_NOWARNING|HTML_PARSE_NOERROR|
HTML_PARSE_NOBLANKS);
else
- doc = fn_xmlReadMemory ((char *) BYTE_POS_ADDR (CHAR_TO_BYTE (istart)),
- bytes, burl, "utf-8",
+ doc = fn_xmlReadMemory ((char *) BYTE_POS_ADDR (istart_byte),
+ iend_byte - istart_byte, burl, "utf-8",
XML_PARSE_NONET|XML_PARSE_NOWARNING|
XML_PARSE_NOBLANKS |XML_PARSE_NOERROR);
@@ -257,7 +256,7 @@ DEFUN ("libxml-parse-html-region", Flibxml_parse_html_region,
If BASE-URL is non-nil, it is used to expand relative URLs. */)
(Lisp_Object start, Lisp_Object end, Lisp_Object base_url)
{
- if (init_libxml2_functions (Vdynamic_library_alist))
+ if (init_libxml2_functions ())
return parse_region (start, end, base_url, 1);
return Qnil;
}
@@ -269,7 +268,7 @@ DEFUN ("libxml-parse-xml-region", Flibxml_parse_xml_region,
If BASE-URL is non-nil, it is used to expand relative URLs. */)
(Lisp_Object start, Lisp_Object end, Lisp_Object base_url)
{
- if (init_libxml2_functions (Vdynamic_library_alist))
+ if (init_libxml2_functions ())
return parse_region (start, end, base_url, 0);
return Qnil;
}