Shlomi Fish avatar Shlomi Fish committed 34cd135

Fix ->keep_blanks(0). (RT #76696).

- apply a test and a fix to correct keep_blanks having no effect on
parse_balanced_chunk.
- fixes https://rt.cpan.org/ticket/display.html?id=76696
- add t/30keep_blanks.t .
- thanks to srezic for the report, the test and the fix.

Comments (0)

Files changed (4)

 Revision history for Perl extension XML::LibXML
 
+    - Apply a test and a fix to correct keep_blanks having no effect on
+    parse_balanced_chunk.
+        - fixes https://rt.cpan.org/Ticket/Display.html?id=76696
+        - Add t/30keep_blanks.t .
+        - Thanks to SREZIC for the report, the test and the fix.
+
 1.96            Fri Mar 16 21:01:09 IST 2012
     - Apply a patch to add leading minus signs to the commands of 
     install_sax_driver.
         }
         if (ctxt) xmlCtxtUseOptions(ctxt, parserOptions ); /* Note: sets ctxt->linenumbers = 1 */
 
+        /* 
+         * Without this if/else conditional, NOBLANKS has no effect.
+         *
+         * For more information, see:
+         *
+         * https://rt.cpan.org/Ticket/Display.html?id=76696
+         *
+         * */
+        if (parserOptions & XML_PARSE_NOBLANKS) {
+            xmlKeepBlanksDefault(0);
+        }
+        else {
+            xmlKeepBlanksDefault(1);
+        }
+
         item =  hv_fetch( real_obj, "XML_LIBXML_LINENUMBERS", 22, 0 );
         if ( item != NULL && SvTRUE(*item) ) {
             if (ctxt) ctxt->linenumbers = 1;
 t/27new_callbacks_simple.t
 t/28new_callbacks_multiple.t
 t/29id.t
+t/30keep_blanks.t
 t/30xpathcontext.t
 t/31xpc_functions.t
 t/32xpc_variables.t

t/30keep_blanks.t

+#!/usr/bin/perl
+
+# This is a regression test for this bug:
+#
+# https://rt.cpan.org/Ticket/Display.html?id=76696
+#
+# <<<
+# Specifying ->keep_blanks(0) has no effect on parse_balanced_chunk anymore.
+# The script below used to pass with XML::LibXML 1.69, but is broken since
+# 1.70 and also with the newest 1.96.
+# >>>
+#
+# Thanks to SREZIC for the report, the test and a patch.
+
+use strict;
+use warnings;
+
+use Test::More tests => 1;
+
+use XML::LibXML;
+
+my $xml = <<'EOF';
+<bla> <foo/> </bla>
+EOF
+
+my $p = XML::LibXML->new;
+$p->keep_blanks(0);
+
+# TEST
+is (
+    scalar( $p->parse_balanced_chunk($xml)->serialize() ),
+    "<bla><foo/></bla>\n",
+    'keep_blanks(0) removes the blanks after a roundtrip.',
+);
Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for ProjectModifiedEvent.java.
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.