You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@xerces.apache.org by am...@apache.org on 2008/05/21 18:43:27 UTC
svn commit: r658751 - in /xerces/c/trunk/src/xercesc:
framework/XMLEntityDecl.cpp framework/XMLEntityDecl.hpp
util/XercesVersion.hpp validators/DTD/DTDScanner.cpp
Author: amassari
Date: Wed May 21 09:43:26 2008
New Revision: 658751
URL: http://svn.apache.org/viewvc?rev=658751&view=rev
Log:
Avoid that an external entity having an empty SYSTEM id is treated as internal (XERCESC-1763)
Modified:
xerces/c/trunk/src/xercesc/framework/XMLEntityDecl.cpp
xerces/c/trunk/src/xercesc/framework/XMLEntityDecl.hpp
xerces/c/trunk/src/xercesc/util/XercesVersion.hpp
xerces/c/trunk/src/xercesc/validators/DTD/DTDScanner.cpp
Modified: xerces/c/trunk/src/xercesc/framework/XMLEntityDecl.cpp
URL: http://svn.apache.org/viewvc/xerces/c/trunk/src/xercesc/framework/XMLEntityDecl.cpp?rev=658751&r1=658750&r2=658751&view=diff
==============================================================================
--- xerces/c/trunk/src/xercesc/framework/XMLEntityDecl.cpp (original)
+++ xerces/c/trunk/src/xercesc/framework/XMLEntityDecl.cpp Wed May 21 09:43:26 2008
@@ -42,6 +42,7 @@
, fPublicId(0)
, fSystemId(0)
, fBaseURI(0)
+ , fIsExternal(false)
, fMemoryManager(manager)
{
}
@@ -57,6 +58,7 @@
, fPublicId(0)
, fSystemId(0)
, fBaseURI(0)
+ , fIsExternal(false)
, fMemoryManager(manager)
{
fName = XMLString::replicate(entName, fMemoryManager);
@@ -75,6 +77,7 @@
, fPublicId(0)
, fSystemId(0)
, fBaseURI(0)
+ , fIsExternal(false)
, fMemoryManager(manager)
{
CleanupType cleanup(this, &XMLEntityDecl::cleanUp);
@@ -105,6 +108,7 @@
, fPublicId(0)
, fSystemId(0)
, fBaseURI(0)
+ , fIsExternal(false)
, fMemoryManager(manager)
{
CleanupType cleanup(this, &XMLEntityDecl::cleanUp);
@@ -177,17 +181,23 @@
serEng.writeString(fPublicId);
serEng.writeString(fSystemId);
serEng.writeString(fBaseURI);
+ serEng<<fIsExternal;
}
else
{
serEng>>fId;
- serEng>>(unsigned long&)fValueLen;
+ unsigned long temp;
+ serEng>>temp;
+ fValueLen=temp;
serEng.readString(fValue);
serEng.readString(fName);
serEng.readString(fNotationName);
serEng.readString(fPublicId);
serEng.readString(fSystemId);
serEng.readString(fBaseURI);
+ // when fIsExternal has been added, XERCES_GRAMMAR_SERIALIZATION_LEVEL has been bumped to 6
+ if(serEng.getStorerLevel()>=6)
+ serEng>>fIsExternal;
}
}
Modified: xerces/c/trunk/src/xercesc/framework/XMLEntityDecl.hpp
URL: http://svn.apache.org/viewvc/xerces/c/trunk/src/xercesc/framework/XMLEntityDecl.hpp?rev=658751&r1=658750&r2=658751&view=diff
==============================================================================
--- xerces/c/trunk/src/xercesc/framework/XMLEntityDecl.hpp (original)
+++ xerces/c/trunk/src/xercesc/framework/XMLEntityDecl.hpp Wed May 21 09:43:26 2008
@@ -252,6 +252,13 @@
);
/**
+ * This method will mark whether the entity is external.
+ *
+ * @param newName The new value for the 'is external' flag.
+ */
+ void setIsExternal(bool value);
+
+ /**
* This method will set the notation name for this entity. By setting
* this, you are indicating that this is an unparsed external entity.
*
@@ -373,6 +380,7 @@
XMLCh* fPublicId;
XMLCh* fSystemId;
XMLCh* fBaseURI;
+ bool fIsExternal;
MemoryManager* fMemoryManager;
};
@@ -422,8 +430,7 @@
inline bool XMLEntityDecl::isExternal() const
{
- // If it has a system or public id, its external
- return ((fPublicId != 0) || (fSystemId != 0));
+ return fIsExternal;
}
inline bool XMLEntityDecl::isUnparsed() const
@@ -445,6 +452,11 @@
fId = newId;
}
+inline void XMLEntityDecl::setIsExternal(bool value)
+{
+ fIsExternal = value;
+}
+
inline void XMLEntityDecl::setNotationName(const XMLCh* const newName)
{
if (fNotationName)
Modified: xerces/c/trunk/src/xercesc/util/XercesVersion.hpp
URL: http://svn.apache.org/viewvc/xerces/c/trunk/src/xercesc/util/XercesVersion.hpp?rev=658751&r1=658750&r2=658751&view=diff
==============================================================================
--- xerces/c/trunk/src/xercesc/util/XercesVersion.hpp (original)
+++ xerces/c/trunk/src/xercesc/util/XercesVersion.hpp Wed May 21 09:43:26 2008
@@ -131,9 +131,13 @@
#define XERCES_VERSION_REVISION 0
/***
- * data member added to XSAnnotation
+ *
+ * XERCES_GRAMMAR_SERIALIZATION_LEVEL = 4 SchemaAttDef, SchemaElementDecl serialize fPSVIScope
+ * XERCES_GRAMMAR_SERIALIZATION_LEVEL = 5 XercesStep serializes the axis as an int
+ * XERCES_GRAMMAR_SERIALIZATION_LEVEL = 6 added fIsExternal to XMLEntityDecl
+ *
***/
-#define XERCES_GRAMMAR_SERIALIZATION_LEVEL 5
+#define XERCES_GRAMMAR_SERIALIZATION_LEVEL 6
/** DO NOT MODIFY BELOW THIS LINE */
Modified: xerces/c/trunk/src/xercesc/validators/DTD/DTDScanner.cpp
URL: http://svn.apache.org/viewvc/xerces/c/trunk/src/xercesc/validators/DTD/DTDScanner.cpp?rev=658751&r1=658750&r2=658751&view=diff
==============================================================================
--- xerces/c/trunk/src/xercesc/validators/DTD/DTDScanner.cpp (original)
+++ xerces/c/trunk/src/xercesc/validators/DTD/DTDScanner.cpp Wed May 21 09:43:26 2008
@@ -2277,6 +2277,7 @@
if (!scanId(bbPubId.getBuffer(), bbSysId.getBuffer(), IDType_External))
return false;
+ decl.setIsExternal(true);
ReaderMgr::LastExtEntityInfo lastInfo;
fReaderMgr->getLastExtEntityInfo(lastInfo);
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@xerces.apache.org
For additional commands, e-mail: commits-help@xerces.apache.org