PLEASE DO NOT REPLY TO THIS MESSAGE. TO FURTHER COMMENT ON THE STATUS OF THIS BUG PLEASE FOLLOW THE LINK BELOW AND USE THE ON-LINE APPLICATION. REPLYING TO THIS MESSAGE DOES NOT UPDATE THE DATABASE, AND SO YOUR COMMENT WILL BE LOST SOMEWHERE. http://nagoya.apache.org/bugzilla/show_bug.cgi?id=3018 *** shadow/3018 Tue Aug 7 08:01:35 2001 --- shadow/3018.tmp.18261 Tue Aug 7 08:01:35 2001 *************** *** 0 **** --- 1,51 ---- + +============================================================================+ + | Using idom causes unaligned access errors on TRU64 | + +----------------------------------------------------------------------------+ + | Bug #: 3018 Product: Xerces-C++ | + | Status: NEW Version: 1.5.1 | + | Resolution: Platform: Alpha | + | Severity: Normal OS/Version: Other | + | Priority: Other Component: DOM | + +----------------------------------------------------------------------------+ + | Assigned To: [EMAIL PROTECTED] | + | Reported By: [EMAIL PROTECTED] | + +----------------------------------------------------------------------------+ + | URL: | + +============================================================================+ + | DESCRIPTION | + I am using Xerces-C 1.5.1 on TRU64 Unix built using cxx v6.3. Running the idom + samples causes hundreds of unaligned access errors. I traced the problem to + the allocate function in idom/IDDocumentImpl.cpp. Making the following changes + resolves the problem: + + *** IDDocumentImpl.cpp Wed Aug 1 15:19:13 2001 + --- xml/xerces-c-src1_5_1/src/idom/IDDocumentImpl.cpp Thu Aug 2 10:43:07 2001 + *************** + *** 858,863 **** + --- 858,867 ---- + + void * IDDocumentImpl::allocate(size_t amount) + { + + size_t sizeOfPointer = sizeof(void *); + + if (amount%sizeOfPointer!=0) + + amount = amount + (sizeOfPointer - (amount % sizeOfPointer)); + + + // If the request is for a largish block, hand it off to the system + // allocator. The block still must be linked into the list of + // allocated blocks so that it will be deleted when the time comes. + *************** + *** 884,890 **** + fFreePtr = 0; + fFreeBytesRemaining = 0; + } + ! void *retPtr = (char *)newBlock + 4; + return retPtr; + } + + --- 888,894 ---- + fFreePtr = 0; + fFreeBytesRemaining = 0; + } + ! void *retPtr = (char *)newBlock + sizeOfPointer; + return retPtr; + } \ No newline at end of file --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
