[ expat-Bugs-481400 ] xmlparser needs parentheses

noreply@sourceforge.net noreply@sourceforge.net
Fri Nov 16 06:40:03 2001


Bugs item #481400, was opened at 2001-11-13 10:49
You can respond by visiting: 
http://sourceforge.net/tracker/?func=detail&atid=110127&aid=481400&group_id=10127

Category: None
Group: None
Status: Open
Resolution: None
Priority: 7
Submitted By: Marc Rubin (jayseye)
>Assigned to: Fred L. Drake, Jr. (fdrake)
Summary: xmlparser needs parentheses

Initial Comment:
Two additional sets of parenteses are needed, in 
xmlparse.c line 3483, under appendAttributeValue(),
as follows: 
 
 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 
currently written: 
 
 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 
2688. 

----------------------------------------------------------------------

>Comment By: Fred L. Drake, Jr. (fdrake)
Date: 2001-11-16 06:39

Message:
Logged In: YES 
user_id=3066

I presume you're using a DTD and the attribute is declared
to  have a type other than CDATA?

----------------------------------------------------------------------

You can respond by visiting: 
http://sourceforge.net/tracker/?func=detail&atid=110127&aid=481400&group_id=10127