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