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
signature.asc
Description: PGP signature