[ http://issues.apache.org/jira/browse/XERCESC-1356?page=all ] Alberto Massari resolved XERCESC-1356: --------------------------------------
Resolution: Fixed David committed a patch for this problem yesterday. Can you please verify it fixes your problem? Thanks, Alberto > in Solaris openFileToWrite returns an error code that is not checked correctly > ------------------------------------------------------------------------------ > > Key: XERCESC-1356 > URL: http://issues.apache.org/jira/browse/XERCESC-1356 > Project: Xerces-C++ > Type: Bug > Components: Utilities > Versions: 2.6.0 > Environment: solaris 2.8 > Reporter: Luc Maisonobe > Priority: Minor > > In Solaris, the FileHandle typedef is an int representing the file descriptor > returned from an "open" system call in the two > XMLPlatformUtils::openFileToWrite methods. > The constructors of LocalFileFormatTarget check the error using the following > statement : > if (!fSource) > ThrowXMLwithMemMgr1(...) > This is correct only for FileHandle types where 0 is an unusable handle > (Linux, for example, where the FileHandle typedef is void* and truly contains > a File* returned by a "fopen" call). For Solaris, error values are > represented by -1 and the check performed in LocalFileFormatTarget > constructors does not detect the error (it appears later when attempting to > write, with a File_CouldNotWriteToFile XMLPlatformUtilsException). > Since the LocalFileFormatTarget constructor also use 0 as the default value > when initializing its attributes, since 0 as a file descriptor represents the > standard input and since XMLPlatformUtils::openFileToWrite is called only by > the LocalFileFormatTarget and BinFileOutputStream constructors, I suggest to > keep it as a forbidden FileHandle even for platforms using file descriptors, > and to change the two Solaris implementations of openFileToWrite like this : > replace > return (FileHandle)open(fileName , > O_WRONLY | O_CREAT | O_TRUNC | O_LARGEFILE, > 0666); > by > int fd = open(fileName , > O_WRONLY | O_CREAT | O_TRUNC | O_LARGEFILE, > 0666); > return (FileHandle) ((fd < 0) ? 0 : fd); -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://issues.apache.org/jira/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]