Author: amassari
Date: Thu Jul 17 04:35:27 2008
New Revision: 677559

URL: http://svn.apache.org/viewvc?rev=677559&view=rev
Log:
When comparing two unions, use the validator that correctly parses both 
instances

Modified:
    xerces/c/trunk/src/xercesc/validators/datatype/UnionDatatypeValidator.cpp

Modified: 
xerces/c/trunk/src/xercesc/validators/datatype/UnionDatatypeValidator.cpp
URL: 
http://svn.apache.org/viewvc/xerces/c/trunk/src/xercesc/validators/datatype/UnionDatatypeValidator.cpp?rev=677559&r1=677558&r2=677559&view=diff
==============================================================================
--- xerces/c/trunk/src/xercesc/validators/datatype/UnionDatatypeValidator.cpp 
(original)
+++ xerces/c/trunk/src/xercesc/validators/datatype/UnionDatatypeValidator.cpp 
Thu Jul 17 04:35:27 2008
@@ -343,8 +343,19 @@
 
     for ( XMLSize_t memberIndex = 0; memberIndex < memberTypeNumber; 
++memberIndex)
     {
-        if (memberDTV->elementAt(memberIndex)->compare(lValue, rValue, 
manager) ==0)
-            return  0;
+        // 'compare' can throw exceptions when the datatype is not valid, or 
just 
+        // return -1; so attempt to validate both values to get the right 
validator
+        try
+        {
+            memberDTV->elementAt(memberIndex)->validate(lValue, 0, manager);   
                    
+            memberDTV->elementAt(memberIndex)->validate(rValue, 0, manager);   
                    
+            if (memberDTV->elementAt(memberIndex)->compare(lValue, rValue, 
manager) ==0)
+                return  0;
+        }
+        catch (XMLException&)
+        {
+            //absorbed
+        }
     }
 
     //REVISIT: what does it mean for UNION1 to be <less than> or <greater 
than> UNION2 ?



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to