summaryrefslogtreecommitdiff
path: root/ext/xml/xml.c
diff options
context:
space:
mode:
Diffstat (limited to 'ext/xml/xml.c')
-rw-r--r--ext/xml/xml.c9
1 files changed, 5 insertions, 4 deletions
diff --git a/ext/xml/xml.c b/ext/xml/xml.c
index be4fe3b110..29d5d96fa7 100644
--- a/ext/xml/xml.c
+++ b/ext/xml/xml.c
@@ -363,7 +363,8 @@ xml_set_handler(char **nameBufp, pval *data)
if (*nameBufp != NULL) {
efree(*nameBufp);
}
- *nameBufp = php3i_pval_strdup(data);
+ convert_to_string(data);
+ *nameBufp = estrndup(data->value.str.val, data->value.str.len);
} else {
if (*nameBufp != NULL) {
efree(*nameBufp);
@@ -378,18 +379,18 @@ xml_set_handler(char **nameBufp, pval *data)
static pval *
xml_call_handler(xml_parser *parser, char *funcName, int argc, pval **argv)
{
+ ELS_FETCH();
+
if (parser && funcName) {
pval *retval, *func;
int i;
- HashTable *function_table;
func = php3i_string_pval(funcName);
retval = emalloc(sizeof(pval));
/* We cannot call internal variables from a function module as
it breaks any chance of compiling it as a module on windows.
Instead, we create a callback function. */
- function_table=php3i_get_function_table();
- if (call_user_function(function_table, NULL, func, retval, argc, argv) == FAILURE) {
+ if (call_user_function(EG(function_table), NULL, func, retval, argc, argv) == FAILURE) {
php3tls_pval_destructor(retval);
efree(retval);
return NULL;