Newsgroups: php.internals Path: news.php.net Xref: news.php.net php.internals:2021 Return-Path: Mailing-List: contact internals-help@lists.php.net; run by ezmlm Delivered-To: mailing list internals@lists.php.net Received: (qmail 60451 invoked from network); 26 May 2003 21:26:54 -0000 Received: from unknown (HELO gamma) (62.242.117.189) by pb1.pair.com with SMTP; 26 May 2003 21:26:54 -0000 Received: from adam by gamma with local (Exim 3.35 #1 (Debian)) id 19KPUd-0005Oa-00 for ; Mon, 26 May 2003 23:26:55 +0200 Date: Mon, 26 May 2003 23:26:55 +0200 To: internals@lists.php.net Message-ID: <20030526212655.GA20701@indexdata.com> References: <20030526183919.GA22949@indexdata.com> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="cNdxnHkX5QqsyA0e" Content-Disposition: inline In-Reply-To: <20030526183919.GA22949@indexdata.com> User-Agent: Mutt/1.3.28i Subject: Re: [PHP-DEV] libxml2 , sablotron combo tested? From: adam@indexdata.dk (Adam Dickmeiss) --cNdxnHkX5QqsyA0e Content-Type: text/plain; charset=us-ascii Content-Disposition: inline OK, I take it that none have testet it. I for one cannot get it to work reliably. I'm using Apache 1.3.27 (compiled from source), Sablotron 0.98 (compiled from source), libxml2.4.19 (Debian 3.0 package), Expat 1.95.2 (Debian 3.0 package). On Apache startup - when - PHP is loaded the process receives a SEGV in malloc. It is quite hard to trace this one down. valgrind bin/httpd -X shows nothing and actually works! I believe the error is due to the expat compat module conflicting with Sablotron's "own" expat. Sablotron is linked with system wide Expat. And PHP's new Expat compat module defines the same symbols. That, I think, results in bad behaviour. The fix is easy: ensure that Expat compat does not introduce the same symbols as Real expat. The attached patch does that. -- Adam On Mon, May 26, 2003 at 08:39:19PM +0200, Adam Dickmeiss wrote: > Hi, > > has anybody tried PHP5 head with the Sablotron , libxml2 > combination? The configure would be Something like: > './configure' \ > '--enable-xslt' \ > '--with-xslt-sablot=/usr/local' \ > ... > > -- Adam > > -- > Adam Dickmeiss mailto:adam@indexdata.dk http://www.indexdata.dk > Index Data T: +45 33410100 Mob.: 212 212 66 > > -- > PHP Internals - PHP Runtime Development Mailing List > To unsubscribe, visit: http://www.php.net/unsub.php --cNdxnHkX5QqsyA0e Content-Type: text/plain; charset=us-ascii Content-Disposition: attachment; filename="expat_compat.patch" Index: ext/xml/expat_compat.h =================================================================== RCS file: /repository/php4/ext/xml/expat_compat.h,v retrieving revision 1.7 diff -u -r1.7 expat_compat.h --- ext/xml/expat_compat.h 22 May 2003 03:29:05 -0000 1.7 +++ ext/xml/expat_compat.h 26 May 2003 21:16:05 -0000 @@ -112,28 +112,78 @@ XML_CTYPE_SEQ }; -XML_Parser XML_ParserCreate(const XML_Char *); -XML_Parser XML_ParserCreateNS(const XML_Char *, const XML_Char); -XML_Parser XML_ParserCreate_MM(const XML_Char *, const XML_Memory_Handling_Suite *, const XML_Char *); -void XML_SetUserData(XML_Parser, void *); -void *XML_GetUserData(XML_Parser); -void XML_SetElementHandler(XML_Parser, XML_StartElementHandler, XML_EndElementHandler); -void XML_SetCharacterDataHandler(XML_Parser, XML_CharacterDataHandler); -void XML_SetProcessingInstructionHandler(XML_Parser, XML_ProcessingInstructionHandler); -void XML_SetDefaultHandler(XML_Parser, XML_DefaultHandler); -void XML_SetUnparsedEntityDeclHandler(XML_Parser, XML_UnparsedEntityDeclHandler); -void XML_SetNotationDeclHandler(XML_Parser, XML_NotationDeclHandler); -void XML_SetExternalEntityRefHandler(XML_Parser, XML_ExternalEntityRefHandler); -void XML_SetStartNamespaceDeclHandler(XML_Parser, XML_StartNamespaceDeclHandler); -void XML_SetEndNamespaceDeclHandler(XML_Parser, XML_EndNamespaceDeclHandler); -int XML_Parse(XML_Parser, const XML_Char *, int data_len, int is_final); -int XML_GetErrorCode(XML_Parser); -const XML_Char *XML_ErrorString(int); -int XML_GetCurrentLineNumber(XML_Parser); -int XML_GetCurrentColumnNumber(XML_Parser); -int XML_GetCurrentByteIndex(XML_Parser); -const XML_Char *XML_ExpatVersion(void); -void XML_ParserFree(XML_Parser); +#define XML_ParserCreate compat_XML_ParserCreate +XML_Parser compat_XML_ParserCreate(const XML_Char *); + +#define XML_ParserCreateNS compat_XML_ParserCreateNS +XML_Parser compat_XML_ParserCreateNS(const XML_Char *, const XML_Char); + +#define XML_ParserCreate_MM compat_XML_ParserCreate_MM +XML_Parser compat_XML_ParserCreate_MM(const XML_Char *, const XML_Memory_Handling_Suite *, const XML_Char *); + +#define XML_SetUserData compat_XML_SetUserData +void compat_XML_SetUserData(XML_Parser, void *); + +#define XML_GetUserData compat_XML_GetUserData +void *compat_XML_GetUserData(XML_Parser); + +#define XML_GetElementHandler compat_XML_SetElementHandler +void compat_XML_SetElementHandler(XML_Parser, XML_StartElementHandler, XML_EndElementHandler); + +#define XML_SetCharacterDataHandler compat_XML_SetCharacterDataHandler +void compat_XML_SetCharacterDataHandler(XML_Parser, XML_CharacterDataHandler); + +#define XML_SetProcessingInstructionHandler compat_XML_SetProcessingInstructionHandler +void compat_XML_SetProcessingInstructionHandler(XML_Parser, XML_ProcessingInstructionHandler); + +#define XML_SetDefaultHandler compat_XML_SetDefaultHandler +void compat_XML_SetDefaultHandler(XML_Parser, XML_DefaultHandler); + +#define XML_SetUnparsedEntityDeclHandler compat_XML_SetUnparsedEntityDeclHandler +void compat_XML_SetUnparsedEntityDeclHandler(XML_Parser, XML_UnparsedEntityDeclHandler); + +#define XML_SetNotationDeclHandler compat_XML_SetNotationDeclHandler +void compat_XML_SetNotationDeclHandler(XML_Parser, XML_NotationDeclHandler); + +#define XML_SetExternalEntityRefHandler compat_XML_SetExternalEntityRefHandler +void compat_XML_SetExternalEntityRefHandler(XML_Parser, XML_ExternalEntityRefHandler); + +#define XML_SetStartNamespaceDeclHandler compat_XML_SetStartNamespaceDeclHandler +void compat_XML_SetStartNamespaceDeclHandler(XML_Parser, XML_StartNamespaceDeclHandler); + +#define XML_SetEndNamespaceDeclHandler compat_XML_SetEndNamespaceDeclHandler +void compat_XML_SetEndNamespaceDeclHandler(XML_Parser, XML_EndNamespaceDeclHandler); + +#define XML_Parse compat_XML_Parse +int compat_XML_Parse(XML_Parser, const XML_Char *, int data_len, int is_final); + +#define XML_GetErrorCode compat_XML_GetErrorCode +int compat_XML_GetErrorCode(XML_Parser); + +#define XML_ErrorString compat_XML_ErrorString +const XML_Char *compat_XML_ErrorString(int); + +#define XML_GetCurrentLineNumber compat_XML_GetCurrentLineNumber +int compat_XML_GetCurrentLineNumber(XML_Parser); + +#define XML_GetCurrentColumnNumber compat_XML_GetCurrentColumnNumber +int compat_XML_GetCurrentColumnNumber(XML_Parser); + +#define XML_GetCurrentByteIndex compat_XML_GetCurrentByteIndex +int compat_XML_GetCurrentByteIndex(XML_Parser); + +#define XML_ExpatVersion compat_XML_ExpatVersion +const XML_Char *compat_XML_ExpatVersion(void); + +#define XML_ParserFree compat_XML_ParserFree +void compat_XML_ParserFree(XML_Parser); + +#define XML_SetCommentHandler compat_XML_SetCommentHandler +void compat_XML_SetCommentHandler(XML_Parser parser, XML_CommentHandler comment); + +#define XML_SetElementHandler compat_XML_SetElementHandler +void compat_XML_SetElementHandler(XML_Parser parser, XML_StartElementHandler start, XML_EndElementHandler end); + #else #include --cNdxnHkX5QqsyA0e--