msopacua Thu Nov 21 18:28:25 2002 EDT Modified files: /php4/ext/xslt php_sablot.h sablot.c Log: Fix bug #20518 Index: php4/ext/xslt/php_sablot.h diff -u php4/ext/xslt/php_sablot.h:1.17 php4/ext/xslt/php_sablot.h:1.18 --- php4/ext/xslt/php_sablot.h:1.17 Sun Nov 10 07:18:02 2002 +++ php4/ext/xslt/php_sablot.h Thu Nov 21 18:28:25 2002 @@ -46,6 +46,7 @@ #define XSLT_ERRNO(handle) ((handle)->err->no) #define XSLT_ERRSTR(handle) ((handle)->err->str) #define XSLT_LOG(handle) ((handle)->err->log) +#define XSLT_BASE_ISSET(handle) ((handle)->base_isset) #define XSLT_FUNCH_FREE(__var) if (__var) zval_ptr_dtor(&(__var)); #define XSLT_REG_ERRMSG(msg, handle) if (XSLT_ERRSTR(handle)) efree(XSLT_ERRSTR(handle)); \ @@ -124,6 +125,7 @@ struct xslt_processor processor; struct xslt_error *err; zval *object; + unsigned short base_isset; } php_xslt; #else Index: php4/ext/xslt/sablot.c diff -u php4/ext/xslt/sablot.c:1.68 php4/ext/xslt/sablot.c:1.69 --- php4/ext/xslt/sablot.c:1.68 Sun Nov 10 07:18:02 2002 +++ php4/ext/xslt/sablot.c Thu Nov 21 18:28:25 2002 @@ -19,7 +19,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: sablot.c,v 1.68 2002/11/10 12:18:02 msopacua Exp $ */ +/* $Id: sablot.c,v 1.69 2002/11/21 23:28:25 msopacua Exp $ */ #ifdef HAVE_CONFIG_H #include "config.h" @@ -218,6 +218,7 @@ handle->handlers = ecalloc(1, sizeof(struct xslt_handlers)); handle->err = ecalloc(1, sizeof(struct xslt_error)); handle->object = NULL; + handle->base_isset = 0; XSLT_LOG(handle).path = NULL; @@ -435,6 +436,7 @@ /* Set the base */ SablotSetBase(XSLT_PROCESSOR(handle), Z_STRVAL_PP(base)); + XSLT_BASE_ISSET(handle) = 1; } /* }}} */ @@ -547,7 +549,6 @@ xslt_make_array(args_p, &args); /* Can return NULL */ if (args) { - char *baseuri; TSRMLS_FETCH(); i=0; while (args[i]) { @@ -559,14 +560,17 @@ } /* Since we have args passed, we need to set the base uri, so pull in executor - globals and set the base, using the current filename, specifally for the + globals and set the base, using the current filename, +specifcally for the 'arg' scheme */ + if(XSLT_BASE_ISSET(handle) == 0) + { + char *baseuri; spprintf(&baseuri, 0, "file://%s", zend_get_executed_filename(TSRMLS_C)); + SablotSetBaseForScheme(XSLT_PROCESSOR(handle), "arg", +baseuri); - SablotSetBaseForScheme(XSLT_PROCESSOR(handle), "arg", baseuri); - - if(baseuri) - efree(baseuri); + if(baseuri) + efree(baseuri); + } } }
-- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php