rrichards Tue Dec 9 15:12:40 2003 EDT Modified files: /php-src/ext/xsl php_xsl.c Log: fix issues when passing in mulitple arguments Index: php-src/ext/xsl/php_xsl.c diff -u php-src/ext/xsl/php_xsl.c:1.14 php-src/ext/xsl/php_xsl.c:1.15 --- php-src/ext/xsl/php_xsl.c:1.14 Sat Nov 29 15:40:54 2003 +++ php-src/ext/xsl/php_xsl.c Tue Dec 9 15:12:39 2003 @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: php_xsl.c,v 1.14 2003/11/29 20:40:54 rrichards Exp $ */ +/* $Id: php_xsl.c,v 1.15 2003/12/09 20:12:39 rrichards Exp $ */ #ifdef HAVE_CONFIG_H #include "config.h" @@ -176,8 +176,12 @@ return; } - args = safe_emalloc(sizeof(zval **), nargs - 1, 0); - for (i = 0; i < nargs - 1; i++) { + fci.param_count = nargs - 1; + fci.params = safe_emalloc(fci.param_count, sizeof(zval**), 0); + + args = safe_emalloc(nargs - 1, sizeof(zval *), 0); + /* Reverse order to pop values off ctxt stack */ + for (i = nargs - 2; i >= 0; i--) { obj = valuePop(ctxt); MAKE_STD_ZVAL(args[i]); switch (obj->type) { @@ -236,6 +240,7 @@ ZVAL_STRING(args[i], "", 0); } xmlXPathFreeObject(obj); + fci.params[i] = &args[i]; } fci.size = sizeof(fci); @@ -250,8 +255,6 @@ fci.symbol_table = NULL; fci.object_pp = NULL; fci.retval_ptr_ptr = &retval; - fci.param_count = nargs - 1; - fci.params = &args; fci.no_separation = 0; /*fci.function_handler_cache = &function_ptr;*/ @@ -280,6 +283,7 @@ zval_ptr_dtor(&args[i]); } efree(args); + efree(fci.params); } static void xsl_ext_function_string_php(xmlXPathParserContextPtr ctxt, int nargs)
-- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php