Annotation of embedaddon/php/ext/xsl/tests/bug49634.phpt, revision 1.1.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>