Author: amassari
Date: Fri Aug 28 09:10:43 2009
New Revision: 808822

URL: http://svn.apache.org/viewvc?rev=808822&view=rev
Log:
If a minOccurs/maxOccurs cannot be parsed in a valid integer because it's too 
big, assume it is 500

Modified:
    xerces/c/trunk/src/xercesc/validators/schema/TraverseSchema.cpp

Modified: xerces/c/trunk/src/xercesc/validators/schema/TraverseSchema.cpp
URL: 
http://svn.apache.org/viewvc/xerces/c/trunk/src/xercesc/validators/schema/TraverseSchema.cpp?rev=808822&r1=808821&r2=808822&view=diff
==============================================================================
--- xerces/c/trunk/src/xercesc/validators/schema/TraverseSchema.cpp (original)
+++ xerces/c/trunk/src/xercesc/validators/schema/TraverseSchema.cpp Fri Aug 28 
09:10:43 2009
@@ -53,6 +53,7 @@
 #include <xercesc/dom/DOMText.hpp>
 #include <xercesc/dom/impl/XSDElementNSImpl.hpp>
 #include <xercesc/util/OutOfMemoryException.hpp>
+#include <xercesc/util/NumberFormatException.hpp>
 #include <xercesc/util/XMLEntityResolver.hpp>
 #include <xercesc/util/XMLUri.hpp>
 #include <xercesc/framework/psvi/XSAnnotation.hpp>
@@ -6020,13 +6021,18 @@
         try {
             minOccurs = XMLString::parseInt(minOccursStr, fMemoryManager);
         }
+        catch(const NumberFormatException& e) 
+        {
+            // REVISIT: report a warning that we replaced a number too big?
+            if(e.getCode()==XMLExcepts::Str_ConvertOverflow)
+                minOccurs = 500;
+            else
+                minOccurs = 1;
+        }
         catch(const OutOfMemoryException&)
         {
             throw;
         }
-        catch (...) {
-            minOccurs = 1;
-        }
 
         if (specNode)
             specNode->setMinOccurs(minOccurs);
@@ -6048,13 +6054,18 @@
             try {
                 maxOccurs = XMLString::parseInt(maxOccursStr, fMemoryManager);
             }
+            catch(const NumberFormatException& e) 
+            {
+                // REVISIT: report a warning that we replaced a number too big?
+                if(e.getCode()==XMLExcepts::Str_ConvertOverflow && minOccurs < 
500)
+                    maxOccurs = 500;
+                else
+                    maxOccurs = minOccurs;
+            }
             catch(const OutOfMemoryException&)
             {
                 throw;
             }
-            catch(...) {
-                maxOccurs = minOccurs;
-            }
 
             if (specNode)
                 specNode->setMaxOccurs(maxOccurs);



---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to