File perl-XML-LibXML-bigendian.patch of Package perl-XML-LibXML

STRLEN has 64 bits here and int has 32, so the (int*) cast in
XML::LibXML::Document::toStringHTML() makes htmlDocDumpMemory() store
the 32-bit length of the result into a 64-bit variable.  Depending on
the endianness, it either works OK (LE) or corrupts the variable (BE)

Just use an 'int' instead, and cast it to an STRLEN later in the
newSVpvn() call.
---
 LibXML.xs |    4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/LibXML.xs b/LibXML.xs
index 8ac23bf..581cc48 100644
--- a/LibXML.xs
+++ b/LibXML.xs
@@ -2930,13 +2930,13 @@ toStringHTML(self)
        XML::LibXML::Document::serialize_html = 1
     PREINIT:
         xmlChar *result=NULL;
-        STRLEN len = 0;
+        int len = 0;
         PREINIT_SAVED_ERROR
     CODE:
         PERL_UNUSED_VAR(ix);
         xs_warn( "use no formated toString!" );
         INIT_ERROR_HANDLER;
-        htmlDocDumpMemory(self, &result, (int*)&len);
+        htmlDocDumpMemory(self, &result, &len);
         CLEANUP_ERROR_HANDLER;
         REPORT_ERROR(0);
 
-- 
1.7.10
openSUSE Build Service is sponsored by