Message:

  A new issue has been created in JIRA.

---------------------------------------------------------------------
View the issue:
  http://issues.apache.org/jira/browse/XERCESC-1268

Here is an overview of the issue:
---------------------------------------------------------------------
        Key: XERCESC-1268
    Summary: MemBufInputSource assertion on membuf delete
       Type: Bug

     Status: Unassigned
   Priority: Major

    Project: Xerces-C++
 Components: 
             Utilities
   Versions:
             2.5.0

   Assignee: 
   Reporter: Igor Mammedov

    Created: Thu, 2 Sep 2004 9:20 AM
    Updated: Thu, 2 Sep 2004 9:20 AM
Environment: Red Hat Enterprise Linux ES release 3 (Taroon)
gcc (GCC) 3.2.3 20030502 (Red Hat Linux 3.2.3-20)
xerces-c-2.5.0-0.20040818.1mdk.src.rpm

Description:
I have next trouble
when I delete dinamicaly created MemBufInputSource I get following assertion message:

XMemory.cpp:121: static void xercesc_2_5::XMemory::operator delete(void*): Assertion 
`manager != 0' failed.

Here is example code to reproduce bug:
----------------------- cut --------------------------------------
#include <xercesc/dom/DOM.hpp>
#include <xercesc/framework/StdOutFormatTarget.hpp>
#include <xercesc/framework/LocalFileFormatTarget.hpp>
#include <xercesc/framework/MemBufFormatTarget.hpp>
#include <xercesc/framework/Wrapper4InputSource.hpp>
#include <xercesc/util/XMLString.hpp>
#include <xercesc/util/PlatformUtils.hpp>
#include <xercesc/framework/MemBufInputSource.hpp>

#ifdef XERCES_CPP_NAMESPACE_USE   
XERCES_CPP_NAMESPACE_USE
#endif


int main(int argc, int argv){
        try {
                XMLPlatformUtils::Initialize();
        }
        catch (const XMLException& toCatch) {
                return 1;
        }
        XMLCh tempStr[100];
        XMLString::transcode("LS", tempStr, 99);
        DOMImplementation *impl = 
DOMImplementationRegistry::getDOMImplementation(tempStr);
        DOMBuilder* parser = 
((DOMImplementationLS*)impl)->createDOMBuilder(DOMImplementationLS::MODE_SYNCHRONOUS, 
0);

        char* tmp_buf = new char[1000];
        strcpy(tmp_buf,"<test><tag>fdf</tag></test>");

        const char*  gMemBufId = "prodInfo";
        MemBufInputSource* memBufIS = new MemBufInputSource( ( XMLByte*)tmp_buf , 
strlen(tmp_buf), gMemBufId, false );
        DOMDocument *doc = parser->parse(Wrapper4InputSource(memBufIS)); <--comment 
here to avoid assertion

        delete memBufIS; <---- crash here
        
        return 0;
}
----------------------- cut --------------------------------------
This code works on solaris but rise assertion on linux.
It doesn't matter whether you addopt buffer or not, assertion happens anyway. 
But it all works fine if we do nothing with memBufIS ( for example: comment parse 
method).

Current work around is to avoid deletion of memBufIS (memory leak :( ).







---------------------------------------------------------------------
JIRA INFORMATION:
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

If you want more information on JIRA, or have a bug to report see:
   http://www.atlassian.com/software/jira


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to