[ https://issues.apache.org/jira/browse/XERCESC-1800?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12594791#action_12594791 ]
Boris Kolpackov commented on XERCESC-1800: ------------------------------------------ Alberto already made a round of changes so if, for example, you look at XMLString in the 3.0.0 codebase, you will see that all string sizes and indexes are passed as XMLSize_t. The same is in DOMCharacterData. It is just there are still some areas where we use int/long, for example as offsets in XMLString (should be changed to XMLSSize_t) and in DOMNodeList. It doesn't make sense to fix only some of the places. The problem with using 32-bit integers where 64-bit should be use is that it makes it very hard to write 64-bit safe application that use Xerces-C++. Every time you need to pass std::size_t from your code to Xerces-C++, you have to cast or will get a warning. Plus we never know how much RAM boxes in a couple of years will have and what users will want to do with that RAM. > DOM API is not 64-bit safe > -------------------------- > > Key: XERCESC-1800 > URL: https://issues.apache.org/jira/browse/XERCESC-1800 > Project: Xerces-C++ > Issue Type: Bug > Components: DOM > Affects Versions: 3.0.0 > Reporter: Boris Kolpackov > Priority: Blocker > Fix For: 3.0.0 > > > There are a number of places in DOM where unsigned int and unsigned long are > used for indexes and sizes. These should be changed to XMLSize_t. Here is the > grep result: > DOMDocument.hpp: const > unsigned long lineNum, > DOMDocument.hpp: const > unsigned long columnNum) = 0; > DOMDocumentTraversal.hpp: > unsigned long whatToShow, > DOMDocumentTraversal.hpp: > unsigned long whatToShow, > DOMLocator.hpp: virtual unsigned long getLineNumber() const = 0; > DOMLocator.hpp: virtual unsigned long getColumnNumber() const = 0; > DOMLSParserFilter.hpp: virtual unsigned long getWhatToShow() const = 0; > DOMLSSerializerFilter.hpp: virtual unsigned long getWhatToShow() const =0; > DOMLSSerializerFilter.hpp: // unsigned long fWhatToShow; > DOMNodeIterator.hpp: virtual unsigned long getWhatToShow() = 0; > DOMTreeWalker.hpp: virtual unsigned long getWhatToShow()= 0; > DOMTypeInfo.hpp: virtual bool isDerivedFrom(const XMLCh* typeNamespaceArg, > const XMLCh* typeNameArg, unsigned long derivationMethod) const = 0; > DOMXPathResult.hpp: virtual unsigned long getSnapshotLength() const = 0; > DOMXPathResult.hpp: * @param index of type unsigned long - Index into the > snapshot collection. > DOMXPathResult.hpp: virtual const DOMNode* snapshotItem(unsigned long > index) const = 0; > DOMImplementationList.hpp: virtual DOMImplementation *item(unsigned int > index) const = 0; > DOMImplementationList.hpp: virtual unsigned int getLength() const = 0; > DOMLSParser.hpp: virtual const XMLCh* getURIText(unsigned int uriId) const > = 0; > DOMNamedNodeMap.hpp: virtual DOMNode *item(unsigned int index) const = > 0; > DOMNamedNodeMap.hpp: virtual unsigned int getLength() const = 0; > DOMNodeList.hpp: virtual DOMNode *item(unsigned int index) const = 0; > DOMNodeList.hpp: virtual unsigned int getLength() const = 0; > DOMStringList.hpp: virtual const XMLCh *item(unsigned int index) const = 0; > DOMStringList.hpp: virtual unsigned int getLength() const = 0; > Ideally, we should do such an audit of the entire codebase. -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online. --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]