|
php.net | support | documentation | report a bug | advanced search | search howto | statistics | random bug | login |
[2004-02-12 19:55 UTC] bo at theaddedones dot com
Description:
------------
i have a slew of xml data that i need to select unique values from ... the easiest method is via the xsl:key ...
when i ever i use xsl:key to make a key (regardless of if i use or not) the xslt processor (libxml2 '20507', libxslt 1.0.30 -> 1.0.36 (the versions i have tried)) i get an 'xmlFree' error IF i compiled the libxml with the debug-mem option...if not i crashes the Apache (1.3.29) child via a bus error...
the error....
Warning: Unknown(): Memory tag error occurs :0x6637671 bye in Unknown on line 0
Warning: Unknown(): xmlMemFree(6637691) error in Unknown on line 0
Warning: Unknown(): xmlMallocBreakpoint reached on block 0 in Unknown on line 0
interestingly, the entire XSL process works fine, and returns a properly converted document (even the keys work properly), it jsut dies with the memory error..i'm guessing something funny with garbage colleciton
Reproduce code:
---------------
the below should dump all the unique states in my data as a comma separated list
<xsl:key name="state_key" match="images" use="state"/>
<xsl:for-each
select="//data[generate-id()=generate-id(key('state_key',state)[1])]"><xsl:value-of select="state"/>,
</xsl:for-each>
save as a normal xslt file
try to compile using dom ala
domxml_xslt_stylesheet_file({your file})...
create some XML, and process the beast via 'process' you shall see the error
Expected result:
----------------
no silly memmory failures
Actual result:
--------------
Warning: Unknown(): Memory tag error occurs :0x6637671 bye in Unknown on line 0
Warning: Unknown(): xmlMemFree(6637691) error in Unknown on line 0
Warning: Unknown(): xmlMallocBreakpoint reached on block 0 in Unknown on line 0
PatchesPull RequestsHistoryAllCommentsChangesGit/SVN commits
|
|||||||||||||||||||||||||||
Copyright © 2001-2025 The PHP GroupAll rights reserved. |
Last updated: Tue Oct 28 01:00:01 2025 UTC |
sorry, in the 'reporduce code' the proper xsl would be (just mistyped it) <xsl:key name="state_key" match="data" use="state"/> <xsl:for-each select="//data[generate-id()=generate-id(key('state_key',state)[1])]"><xsl:value-of select="state"/>, </xsl:for-each>