Annotation of embedaddon/php/ext/xsl/tests/bug49634.phpt, revision 1.1

1.1     ! misho       1: --TEST--
        !             2: bug #49634 (Segfault throwing an exception in a XSL registered function)
        !             3: --SKIPIF--
        !             4: <?php
        !             5: extension_loaded("xsl") or die("skip need ext/xsl");
        !             6: ?>
        !             7: --FILE--
        !             8: <?php
        !             9: 
        !            10: $sXml = <<<XML
        !            11: <?xml version="1.0" encoding="UTF-8" ?>
        !            12: <root>
        !            13:        test
        !            14: </root>
        !            15: XML;
        !            16: 
        !            17: $cDIR = __DIR__;
        !            18: $sXsl = <<<XSL
        !            19: <xsl:stylesheet version="1.0"
        !            20:                 xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
        !            21:                 xmlns:ext="http://php.net/xsl"
        !            22:                 xsl:extension-element-prefixes="ext"
        !            23:                 exclude-result-prefixes="ext">
        !            24:        <xsl:output encoding="UTF-8" indent="yes" method="xml" />
        !            25:        <xsl:template match="/">
        !            26:                <xsl:value-of select="ext:function('testFunction', document('$cDIR/bug49634.xml')/root)"/>
        !            27:        </xsl:template>
        !            28: </xsl:stylesheet>
        !            29: XSL;
        !            30: 
        !            31: function testFunction($a)
        !            32: {
        !            33:                throw new Exception('Test exception.');
        !            34: }
        !            35: 
        !            36: $domXml = new DOMDocument;
        !            37: $domXml->loadXML($sXml);
        !            38: $domXsl = new DOMDocument;
        !            39: $domXsl->loadXML($sXsl);
        !            40: 
        !            41: for ($i = 0; $i < 10; $i++)
        !            42: {
        !            43:        $xsltProcessor = new XSLTProcessor();
        !            44:        $xsltProcessor->registerPHPFunctions(array('testFunction'));
        !            45:        $xsltProcessor->importStyleSheet($domXsl);
        !            46:        try {
        !            47:                @$xsltProcessor->transformToDoc($domXml);
        !            48:        } catch (Exception $e) {
        !            49:                echo $e,"\n";
        !            50:        }
        !            51: }
        !            52: ?>
        !            53: ===DONE===
        !            54: --EXPECTF--
        !            55: exception 'Exception' with message 'Test exception.' in %s:%d
        !            56: Stack trace:
        !            57: #0 [internal function]: testFunction(Array)
        !            58: #1 %s(%d): XSLTProcessor->transformToDoc(Object(DOMDocument))
        !            59: #2 {main}
        !            60: exception 'Exception' with message 'Test exception.' in %s:%d
        !            61: Stack trace:
        !            62: #0 [internal function]: testFunction(Array)
        !            63: #1 %s(%d): XSLTProcessor->transformToDoc(Object(DOMDocument))
        !            64: #2 {main}
        !            65: exception 'Exception' with message 'Test exception.' in %s:%d
        !            66: Stack trace:
        !            67: #0 [internal function]: testFunction(Array)
        !            68: #1 %s(%d): XSLTProcessor->transformToDoc(Object(DOMDocument))
        !            69: #2 {main}
        !            70: exception 'Exception' with message 'Test exception.' in %s:%d
        !            71: Stack trace:
        !            72: #0 [internal function]: testFunction(Array)
        !            73: #1 %s(%d): XSLTProcessor->transformToDoc(Object(DOMDocument))
        !            74: #2 {main}
        !            75: exception 'Exception' with message 'Test exception.' in %s:%d
        !            76: Stack trace:
        !            77: #0 [internal function]: testFunction(Array)
        !            78: #1 %s(%d): XSLTProcessor->transformToDoc(Object(DOMDocument))
        !            79: #2 {main}
        !            80: exception 'Exception' with message 'Test exception.' in %s:%d
        !            81: Stack trace:
        !            82: #0 [internal function]: testFunction(Array)
        !            83: #1 %s(%d): XSLTProcessor->transformToDoc(Object(DOMDocument))
        !            84: #2 {main}
        !            85: exception 'Exception' with message 'Test exception.' in %s:%d
        !            86: Stack trace:
        !            87: #0 [internal function]: testFunction(Array)
        !            88: #1 %s(%d): XSLTProcessor->transformToDoc(Object(DOMDocument))
        !            89: #2 {main}
        !            90: exception 'Exception' with message 'Test exception.' in %s:%d
        !            91: Stack trace:
        !            92: #0 [internal function]: testFunction(Array)
        !            93: #1 %s(%d): XSLTProcessor->transformToDoc(Object(DOMDocument))
        !            94: #2 {main}
        !            95: exception 'Exception' with message 'Test exception.' in %s:%d
        !            96: Stack trace:
        !            97: #0 [internal function]: testFunction(Array)
        !            98: #1 %s(%d): XSLTProcessor->transformToDoc(Object(DOMDocument))
        !            99: #2 {main}
        !           100: exception 'Exception' with message 'Test exception.' in %s:%d
        !           101: Stack trace:
        !           102: #0 [internal function]: testFunction(Array)
        !           103: #1 %s(%d): XSLTProcessor->transformToDoc(Object(DOMDocument))
        !           104: #2 {main}
        !           105: ===DONE===

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>