On Mon, Jul 28, 2025 at 04:16:07PM -0400, Tom Lane wrote:
> Erik's v2 is slightly wrong as to the save-and-restore logic for
> the KeepBlanks setting: we need to restore in the error path too,
> and we'd better mark the save variable volatile since it's modified
> inside the PG_TRY.  I made some other cosmetic changes, mainly to
> avoid calculating "options" when it won't be used.  I tested the
> attached v3 against RHEL8's libxml2-2.9.7, as well as against today's
> libxml2 git master, and it accepts the problematic input on both.

This has been applied already as of 71c0921b649d, and I've
double-checked the behavior with my local libxml2 builds as well.
Thanks for the fix, the result looks OK to me!

+            /* set parse options --- have to do this the ugly way */
+            save_keep_blanks = xmlKeepBlanksDefault(preserve_whitespace ? 1 : 
0);
[...] 
+        if (save_keep_blanks != -1)
+            xmlKeepBlanksDefault(save_keep_blanks);
[...]
+    if (save_keep_blanks != -1)
+        xmlKeepBlanksDefault(save_keep_blanks);

I didn't spot that this option existed though.  That's an interesting
trick, Erik.  It's a bit weird that we have to to live with this
style, but with the TRY/CATCH blocks we are already relying on it's
not that bad at the end.
--
Michael

Attachment: signature.asc
Description: PGP signature

Reply via email to