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 "Raja chandar (JIRA)" <xe...@xml.apache.org> on 2008/08/01 05:14:31 UTC

[jira] Commented: (XERCESC-1658) Inaccurate error message "Type:XMLPlatformException, Message:Could not close the file"

    [ https://issues.apache.org/jira/browse/XERCESC-1658?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12618923#action_12618923 ] 

Raja chandar commented on XERCESC-1658:
---------------------------------------

Hi,
   i am also getting this error 'Type:XMLPlatformException, Message:Could not close the file'  when using xerces-c_2_7_0 during parsing xml but same code managed to process when using 
Compiler :  Sun C++ 5.9 SunOS_sparc Patch 124863-01 2007/07/25

platform : solaris 
OS :  SunOS  5.10 Generic_125100-05 sun4u sparc SUNW,Sun-Fire-V490

> Inaccurate error message "Type:XMLPlatformException, Message:Could not close the file"
> --------------------------------------------------------------------------------------
>
>                 Key: XERCESC-1658
>                 URL: https://issues.apache.org/jira/browse/XERCESC-1658
>             Project: Xerces-C++
>          Issue Type: Improvement
>          Components: Validating Parser (XML Schema)
>    Affects Versions: 2.7.0
>         Environment: Solaris 10
>            Reporter: Paul Fee
>            Assignee: Alberto Massari
>
> XMLPlatformUtils::openFile() in SolarisPlatformUtils.cpp:227 directly returns the result of the open(2) system call.
> This can return -1 on error, such as "File not found".  However other parts of Xerces take this return could without further validation.  Also, when an error occurs, valuable information is available for a short time in errno, this information (i.e. the reason why -1 was return) is not captured for use in error messages.
> An example of when the return is stored is in 
> BinFileInputStream::BinFileInputStream(const XMLCh* const fileName, MemoryManager* const manager)
> Here fSource can end up with a value of -1, which in turn means that the destructor for BinFileInputStream will fail.
> BinFileInputStream::~BinFileInputStream()
> {
>   if (fSource)
>     XMLPlatformUtils::closeFile(fSource, fMemoryManager);
> }
> It detects that fSource is non-zero and tries to close the file, but -1 is not a valid file descriptor.
> Hence we end up with the inaccurate error message "Could not close the file".
> Error checking surrounding XMLPlatformUtils::openFile() should be improved.
> Thank you,
> Paul

-- 
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: c-dev-unsubscribe@xerces.apache.org
For additional commands, e-mail: c-dev-help@xerces.apache.org