Hi Daniel, All, Some days ago I wrote, that using Watcom C on Win32, validating (xmllint --valid) segfaults, but only when compiled without debugging info. I was wondering since then whether the compiler or the code is to blame. I still don't know the answer to this question, but I know the cause of the segfaulting and I have a patch. The problem is the casting of a callback function to a different signature in xmlHashScanner: xmlHashScan(xmlHashTablePtr table, xmlHashScanner f, void *data) { ! xmlHashScanFull (table, (xmlHashScannerFull) f, data); } I'm pretty sure the C++ standard sees this as cause of undefined behaviour, but I don't know whether written or unwritten C rules require a compiler to handle this. Anyway, I've attached a patch which avoids this cast by using a stub function with the right signature. Strictly speaking, it's not completely kosher, as it still requires casting away a const modifier. Regards, Peter Jacobi
Attachment:
hash.c.diff.gz
Description: Binary data