You are viewing a plain text version of this content. The canonical link for it is here.
Posted to c-dev@xerces.apache.org by bu...@apache.org on 2002/11/15 18:10:51 UTC
DO NOT REPLY [Bug 14598] New: -
IRIX 6.5 / g++ 3.0.4 compilation bugs
DO NOT REPLY TO THIS EMAIL, BUT PLEASE POST YOUR BUG
RELATED COMMENTS THROUGH THE WEB INTERFACE AVAILABLE AT
<http://nagoya.apache.org/bugzilla/show_bug.cgi?id=14598>.
ANY REPLY MADE TO THIS MESSAGE WILL NOT BE COLLECTED AND
INSERTED IN THE BUG DATABASE.
http://nagoya.apache.org/bugzilla/show_bug.cgi?id=14598
IRIX 6.5 / g++ 3.0.4 compilation bugs
Summary: IRIX 6.5 / g++ 3.0.4 compilation bugs
Product: Xerces-C++
Version: 2.1.0
Platform: Other
OS/Version: Other
Status: NEW
Severity: Blocker
Priority: Other
Component: Build
AssignedTo: xerces-c-dev@xml.apache.org
ReportedBy: woody@hackswell.com
Last night, I was trying to compile Xerces 2.1.0 on Irix 6.5.16 (or is it
.17?) with g++ 3.0.4. I found that in the IRIXPlatformUtils.cpp, three
methods were missing. openFileToWrite(2x), and writeBufferToFile. Was this
intentional, or an oversight? I got it to work by copying the functions
from Linux and praying a lot. ;)
I also noticed then that it worked, but always dumped core. I traced down
the bug to the fact that it is trying to free semaphores AFTER it frees the
arena. I put some sanity checking in, but it still doesn't solve the
problem, just work around it.
Anyway, here is the patch. Maybe it will be useful. :)
-Richard Balint
Ball Aerospace & Technologies
(and Hackswell.com is my personal address, not my work account. ;)
diff -r xerces-c-src2_1_0.orig/samples/Makefile.incl
xerces-c-src2_1_0/samples/Makefile.incl
86c86
< PLATFORM_LIB_LINK_OPTIONS=-L/usr/lib -L/usr/local/lib
---
> PLATFORM_LIB_LINK_OPTIONS=-L/usr/lib32 -L/usr/local/lib
diff -r xerces-c-src2_1_0.orig/src/xercesc/util/Platforms/IRIX/IRIXPlatformUtils.cpp
xerces-c-src2_1_0/src/xercesc/util/Platforms/IRIX/IRIXPlatformUtils.cpp
321a322,335
> FileHandle XMLPlatformUtils::openFileToWrite(const XMLCh* const fileName)
> {
> const char* tmpFileName = XMLString::transcode(fileName);
> ArrayJanitor<char> janText((char*)tmpFileName);
> return fopen( tmpFileName , "wb" );
> }
>
> FileHandle XMLPlatformUtils::openFileToWrite(const char* const fileName)
> {
> return fopen( fileName , "wb" );
> }
>
>
>
345a360,396
>
> void
> XMLPlatformUtils::writeBufferToFile( FileHandle const theFile
> , long toWrite
> , const XMLByte* const toFlush)
> {
> if (!theFile ||
> (toWrite <= 0 ) ||
> !toFlush )
> return;
>
> const XMLByte* tmpFlush = (const XMLByte*) toFlush;
> size_t bytesWritten = 0;
>
> while (true)
> {
> bytesWritten=fwrite(tmpFlush, sizeof(XMLByte), toWrite, (FILE*)theFile);
>
> if(ferror((FILE*)theFile))
> {
> ThrowXML(XMLPlatformUtilsException,
XMLExcepts::File_CouldNotWriteToFile);
> }
>
> if (bytesWritten < toWrite) //incomplete write
> {
> tmpFlush+=bytesWritten;
> toWrite-=bytesWritten;
> bytesWritten=0;
> }
> else
> return;
> }
>
> return;
> }
>
>
533,534c584,585
< static char* arenaName = 0;
< static usptr_t* arena = 0;
---
> static char* arenaName = NULL;
> static usptr_t* arena = NULL;
559a611,612
>
> arena = NULL;
588,589c641,643
< if (mtxHandle != NULL) {
< usfreesema (mtxHandle, arena);
---
> if ((mtxHandle != NULL) && (arena != NULL)) {
>
> usfreesema ((usema_t *)mtxHandle, arena);
---------------------------------------------------------------------
To unsubscribe, e-mail: xerces-c-dev-unsubscribe@xml.apache.org
For additional commands, e-mail: xerces-c-dev-help@xml.apache.org