]> git.ipfire.org Git - thirdparty/gettext.git/commitdiff
xgettext: Fix infloop on loading Glade files with non-DL expat
authorDaiki Ueno <ueno@gnu.org>
Wed, 12 Mar 2014 03:00:33 +0000 (12:00 +0900)
committerDaiki Ueno <ueno@gnu.org>
Wed, 12 Mar 2014 03:02:02 +0000 (12:02 +0900)
gettext-tools/src/ChangeLog
gettext-tools/src/libexpat-compat.c

index 0537dd2430ad8a1e20e0953c46b37ec13bb51546..06a59bdb7cea214b1975f996f4421250001a4993 100644 (file)
@@ -1,3 +1,10 @@
+2014-03-12  Daiki Ueno  <ueno@gnu.org>
+
+       xgettext: Fix infloop on loading Glade files with non-DL expat
+       * libexpat-compat.c: Keep the references to
+       XML_GetCurrent{Line,Column}Number symbols before including
+       libexpat-compat.h, since they are redefined.
+
 2014-03-10  Daiki Ueno  <ueno@gnu.org>
 
        php: Recognize single and double quotes around heredoc label
index b9bbbddda672e3a31fbac93a9fbf40a1f1613042..ad680db9e567267cb0f4980dd0091314479cd667 100644 (file)
 #include <stdlib.h>
 #include <string.h>
 
+#if DYNLOAD_LIBEXPAT
+# include <dlfcn.h>
+#else
+# if HAVE_LIBEXPAT
+#  include <expat.h>
+# endif
+#endif
+
+/* Keep the references to XML_GetCurrent{Line,Column}Number symbols
+   before loading libexpat-compat.h, since they are redefined to
+   rpl_XML_GetCurrent{Line,Column}Number .  */
+#if !DYNLOAD_LIBEXPAT && XML_MAJOR_VERSION >= 2
+static void *p_XML_GetCurrentLineNumber = (void *) &XML_GetCurrentLineNumber;
+static void *p_XML_GetCurrentColumnNumber = (void *) &XML_GetCurrentColumnNumber;
+#endif
+
 #include "libexpat-compat.h"
 
 /* ======================= Different libexpat ABIs.  ======================= */
@@ -66,8 +82,6 @@ is_XML_LARGE_SIZE_ABI (void)
   return is_large;
 }
 
-static void *p_XML_GetCurrentLineNumber = (void *) &XML_GetCurrentLineNumber;
-
 int64_t
 rpl_XML_GetCurrentLineNumber (XML_Parser parser)
 {
@@ -77,8 +91,6 @@ rpl_XML_GetCurrentLineNumber (XML_Parser parser)
     return ((long (*) (XML_Parser)) p_XML_GetCurrentLineNumber) (parser);
 }
 
-static void *p_XML_GetCurrentColumnNumber = (void *) &XML_GetCurrentColumnNumber;
-
 int64_t
 rpl_XML_GetCurrentColumnNumber (XML_Parser parser)
 {