From 620d0134998265e6445d98ede51de5e7c4d09cb5 Mon Sep 17 00:00:00 2001 From: Zeev Suraski Date: Fri, 30 Jul 1999 14:17:08 +0000 Subject: [PATCH] Support symbols in any symbol table, not just the active one --- Zend/zend_API.h | 23 +++++++++++++++-------- 1 file changed, 15 insertions(+), 8 deletions(-) diff --git a/Zend/zend_API.h b/Zend/zend_API.h index 00d271d6fc..d1535a3ed6 100644 --- a/Zend/zend_API.h +++ b/Zend/zend_API.h @@ -226,19 +226,19 @@ ZEND_API int add_property_stringl(zval *arg, char *key, char *str, uint length, } -#define ZEND_SET_GLOBAL_VAR(name, var) \ - { \ - char *_name = (name); \ - \ - ZEND_SET_GLOBAL_VAR_WITH_LENGTH(_name, strlen(_name)+1, var); \ +#define ZEND_SET_SYMBOL(symtable, name, var) \ + { \ + char *_name = (name); \ + \ + ZEND_SET_SYMBOL_WITH_LENGTH(symtable, _name, strlen(_name)+1, var); \ } -#define ZEND_SET_GLOBAL_VAR_WITH_LENGTH(name, name_length, var) \ +#define ZEND_SET_SYMBOL_WITH_LENGTH(symtable, name, name_length, var) \ { \ zval **orig_var; \ \ - if (zend_hash_find(&EG(symbol_table), (name), (name_length), (void **) &orig_var)==SUCCESS \ + if (zend_hash_find(symtable, (name), (name_length), (void **) &orig_var)==SUCCESS \ && PZVAL_IS_REF(*orig_var)) { \ int locks = (*orig_var)->EA.locks; \ int refcount = (*orig_var)->refcount; \ @@ -252,10 +252,17 @@ ZEND_API int add_property_stringl(zval *arg, char *key, char *str, uint length, efree(var); \ } else { \ INIT_PZVAL(var); \ - zend_hash_update(&EG(symbol_table), (name), (name_length), &var, sizeof(zval *), NULL); \ + zend_hash_update(symtable, (name), (name_length), &var, sizeof(zval *), NULL); \ } \ } + +#define ZEND_SET_GLOBAL_VAR(name, var) \ + ZEND_SET_SYMBOL(&EG(symbol_table), name, var) + +#define ZEND_SET_GLOBAL_VAR_WITH_LENGTH(name, name_length, var) \ + ZEND_SET_SYMBOL_WITH_LENGTH(&EG(symbol_table), name, name_length, var) + #endif /* _ZEND_API_H */ /* -- 2.40.0