Two additional sets of parenteses are needed, in
xmlparse.c line 3483, under appendAttributeValue(),
if ((!isCdata && (poolLength(pool) == 0) ||
(poolLastChar(pool) == 0x20)))
The intent of the existing code is to suppress
multiple spaces, but this gets short-circuited as
if (!isCdata && (poolLength(pool) == 0 || poolLastChar
(pool) == 0x20))
The second test is skipped due to the expansion of the
poolLength() and poolLastChar() preprocessor #defines.
The symptom is that multiple spaces are incorrectly
preserved in attribute values. They are suppressed, as
intended, by adding the parenteses.
The same fix should be applied to xmlparse.cpp line