HI,
I am using the binaries built at zlatkovic.com. When I am calling xmlFree 
after calling xmlNodeListGetString, the program is crashing with a really 
weird unhandled exception

Unhandled exception at 0x026332a0 in dconnect.exe: 0xC000001E:  An attempt 
was made to execute an invalid lock sequence.


For structural reasons I am not linking the DLL into my application by 
using LoadLibrary and GetProcAddress. I am pretty sure the problem is that 
the xmlFree address is incorrect, or I am passing an invalid argument but 
I cant see what it could be.


My code is shown below


xmlFreeFunc lpXMLFREE = NULL;

HMODULE hXML = NULL;

BOOL InitXML()
{
        if (hXML)
                return(TRUE);

        hXML = LoadLibrary("libxml2.dll");
        if (hXML == NULL)
                return(FALSE);

        if (!(lpXMLNEWDOC = (LPXMLNEWDOC) GetProcAddress (hXML, 
"xmlNewDoc")))
                return(FALSE);
        if (!(lpXMLFREEDOC = (LPXMLFREEDOC) GetProcAddress (hXML, 
"xmlFreeDoc")))
                return(FALSE);
        if (!(lpXMLNEWNODE = (LPXMLNEWNODE) GetProcAddress (hXML, 
"xmlNewNode")))
                return(FALSE);
        if (!(lpXMLDOCSETROOTELEMENT = (LPXMLDOCSETROOTELEMENT) 
GetProcAddress (hXML, "xmlDocSetRootElement")))
                return(FALSE);
        if (!(lpXMLDOCGETROOTELEMENT = (LPXMLDOCGETROOTELEMENT) 
GetProcAddress (hXML, "xmlDocGetRootElement")))
                return(FALSE);
        if (!(lpXMLNEWNS = (LPXMLNEWNS) GetProcAddress (hXML, "xmlNewNs"
)))
                return(FALSE);
        if (!(lpXMLNEWCHILD = (LPXMLNEWCHILD) GetProcAddress (hXML, 
"xmlNewChild")))
                return(FALSE);
        if (!(lpXMLNEWTEXTCHILD = (LPXMLNEWTEXTCHILD) GetProcAddress 
(hXML, "xmlNewTextChild")))
                return(FALSE);
        if (!(lpXMLSAVEFORMATFILEENC = (LPXMLSAVEFORMATFILEENC) 
GetProcAddress (hXML, "xmlSaveFormatFileEnc")))
                return(FALSE);
        if (!(lpXMLSAVEFORMATFILE = (LPXMLSAVEFORMATFILE) GetProcAddress 
(hXML, "xmlSaveFormatFile")))
                return(FALSE);
        if (!(lpXMLPARSEFILE = (LPXMLPARSEFILE) GetProcAddress (hXML, 
"xmlParseFile")))
                return(FALSE);
        if (!(lpXMLSTRCMP = (LPXMLSTRCMP) GetProcAddress (hXML, 
"xmlStrcmp")))
                return(FALSE);
        if (!(lpXMLNODELISTGETSTRING = 
(LPXMLNODELISTGETSTRING)GetProcAddress(hXML, "xmlNodeListGetString")))
                return(FALSE);
        if (!(lpXMLFREE = (xmlFreeFunc)GetProcAddress(hXML, "xmlFree")))
                return(FALSE);
        return(TRUE);
}

void msaxmlFree(void *v)
{
        lpXMLFREE(v);
}

Phil Salomon
Managing Director
Micronet Systems Australia

Phone: 02 9542 2000
Fax    : 02 9542 2100
email  : [EMAIL PROTECTED]


Disclaimer:
The email and any files transmitted with it are confidential and may be 
subject to copyright. They are intended solely for the use of the 
individual or entity to whom they are addressed. If you have received this 
message in error please notify Micronet Systems (Australia) Pty Ltd 
immediately by return email or by calling +61 2 9542 2000.  The 
republication and re-dissemination are strictly prohibited without the 
express prior consent of Micronet Systems (Australia) Pty Ltd.
Any views or opinions presented in this email are solely those of the 
author and do not necessarily represent those of Micronet Systems 
(Australia) Pty Ltd except where an authorised sender specifically states 
them to be the views of Micronet Systems (Australia) Pty Ltd.
It is your responsibility to verify this email and any attachments for the 
presence of viruses. Micronet Systems (Australia) Pty Ltd accepts no 
liability for any damage caused by any virus transmitted. 
_______________________________________________
xml mailing list, project page  http://xmlsoft.org/
xml@gnome.org
http://mail.gnome.org/mailman/listinfo/xml

Reply via email to