summaryrefslogtreecommitdiff
path: root/Zend
diff options
context:
space:
mode:
authorZeev Suraski <zeev@php.net>1999-07-30 14:17:08 +0000
committerZeev Suraski <zeev@php.net>1999-07-30 14:17:08 +0000
commit620d0134998265e6445d98ede51de5e7c4d09cb5 (patch)
treefaa4c47053e0e4da79f9c3a99cd00b181a588879 /Zend
parente1a84e442e8fe918e5d5151c0a354dc640799abf (diff)
downloadphp-git-620d0134998265e6445d98ede51de5e7c4d09cb5.tar.gz
Support symbols in any symbol table, not just the active one
Diffstat (limited to 'Zend')
-rw-r--r--Zend/zend_API.h23
1 files 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 */
/*