mirror of
https://github.com/twigphp/Twig.git
synced 2026-09-17 04:46:49 +00:00
[ext] fixed php 5.2 ZTS builds
zend_hash_apply_with_arguments and its callback argument do not have a TSRMLS in php 5.2.
This commit is contained in:
+22
-8
@@ -29,6 +29,16 @@
|
|||||||
#define Z_ADDREF_P(pz) (pz)->refcount++
|
#define Z_ADDREF_P(pz) (pz)->refcount++
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#if PHP_VERSION_ID >= 50300
|
||||||
|
#define APPLY_TSRMLS_DC TSRMLS_DC
|
||||||
|
#define APPLY_TSRMLS_CC TSRMLS_CC
|
||||||
|
#define APPLY_TSRMLS_FETCH()
|
||||||
|
#else
|
||||||
|
#define APPLY_TSRMLS_DC
|
||||||
|
#define APPLY_TSRMLS_CC
|
||||||
|
#define APPLY_TSRMLS_FETCH() TSRMLS_FETCH()
|
||||||
|
#endif
|
||||||
|
|
||||||
ZEND_BEGIN_ARG_INFO_EX(twig_template_get_attribute_args, ZEND_SEND_BY_VAL, ZEND_RETURN_VALUE, 6)
|
ZEND_BEGIN_ARG_INFO_EX(twig_template_get_attribute_args, ZEND_SEND_BY_VAL, ZEND_RETURN_VALUE, 6)
|
||||||
ZEND_ARG_INFO(0, template)
|
ZEND_ARG_INFO(0, template)
|
||||||
ZEND_ARG_INFO(0, object)
|
ZEND_ARG_INFO(0, object)
|
||||||
@@ -501,8 +511,9 @@ void TWIG_NEW(zval *object, char *class, zval *arg0, zval *arg1 TSRMLS_DC)
|
|||||||
TWIG_CALL_ZZ(object, "__construct", arg0, arg1 TSRMLS_CC);
|
TWIG_CALL_ZZ(object, "__construct", arg0, arg1 TSRMLS_CC);
|
||||||
}
|
}
|
||||||
|
|
||||||
static int twig_add_array_key_to_string(void *pDest TSRMLS_DC, int num_args, va_list args, zend_hash_key *hash_key)
|
static int twig_add_array_key_to_string(void *pDest APPLY_TSRMLS_DC, int num_args, va_list args, zend_hash_key *hash_key)
|
||||||
{
|
{
|
||||||
|
APPLY_TSRMLS_FETCH();
|
||||||
smart_str *buf;
|
smart_str *buf;
|
||||||
char *joiner;
|
char *joiner;
|
||||||
|
|
||||||
@@ -534,7 +545,7 @@ char *TWIG_IMPLODE_ARRAY_KEYS(char *joiner, zval *array TSRMLS_DC)
|
|||||||
smart_str collector = { 0, 0, 0 };
|
smart_str collector = { 0, 0, 0 };
|
||||||
|
|
||||||
smart_str_appendl(&collector, "", 0);
|
smart_str_appendl(&collector, "", 0);
|
||||||
zend_hash_apply_with_arguments(HASH_OF(array) TSRMLS_CC, twig_add_array_key_to_string, 2, &collector, joiner);
|
zend_hash_apply_with_arguments(HASH_OF(array) APPLY_TSRMLS_CC, twig_add_array_key_to_string, 2, &collector, joiner);
|
||||||
smart_str_0(&collector);
|
smart_str_0(&collector);
|
||||||
|
|
||||||
return collector.c;
|
return collector.c;
|
||||||
@@ -570,8 +581,9 @@ char *TWIG_GET_CLASS_NAME(zval *object TSRMLS_DC)
|
|||||||
return class_name;
|
return class_name;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int twig_add_method_to_class(void *pDest TSRMLS_DC, int num_args, va_list args, zend_hash_key *hash_key)
|
static int twig_add_method_to_class(void *pDest APPLY_TSRMLS_DC, int num_args, va_list args, zend_hash_key *hash_key)
|
||||||
{
|
{
|
||||||
|
APPLY_TSRMLS_FETCH();
|
||||||
zval *retval;
|
zval *retval;
|
||||||
char *item;
|
char *item;
|
||||||
size_t item_len;
|
size_t item_len;
|
||||||
@@ -592,8 +604,9 @@ static int twig_add_method_to_class(void *pDest TSRMLS_DC, int num_args, va_list
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int twig_add_property_to_class(void *pDest TSRMLS_DC, int num_args, va_list args, zend_hash_key *hash_key)
|
static int twig_add_property_to_class(void *pDest APPLY_TSRMLS_DC, int num_args, va_list args, zend_hash_key *hash_key)
|
||||||
{
|
{
|
||||||
|
APPLY_TSRMLS_FETCH();
|
||||||
zend_class_entry *ce;
|
zend_class_entry *ce;
|
||||||
zval *retval;
|
zval *retval;
|
||||||
char *class_name, *prop_name;
|
char *class_name, *prop_name;
|
||||||
@@ -614,8 +627,9 @@ static int twig_add_property_to_class(void *pDest TSRMLS_DC, int num_args, va_li
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* {{{ _adddynproperty */
|
/* {{{ _adddynproperty */
|
||||||
static int twig_add_dyn_property_to_class(void *pDest TSRMLS_DC, int num_args, va_list args, zend_hash_key *hash_key)
|
static int twig_add_dyn_property_to_class(void *pDest APPLY_TSRMLS_DC, int num_args, va_list args, zend_hash_key *hash_key)
|
||||||
{
|
{
|
||||||
|
APPLY_TSRMLS_FETCH();
|
||||||
zend_class_entry *ce = *va_arg(args, zend_class_entry**);
|
zend_class_entry *ce = *va_arg(args, zend_class_entry**);
|
||||||
zval *retval = va_arg(args, zval*), member;
|
zval *retval = va_arg(args, zval*), member;
|
||||||
char *class_name, *prop_name;
|
char *class_name, *prop_name;
|
||||||
@@ -646,12 +660,12 @@ static void twig_add_class_to_cache(zval *cache, zval *object, char *class_name
|
|||||||
array_init(class_methods);
|
array_init(class_methods);
|
||||||
array_init(class_properties);
|
array_init(class_properties);
|
||||||
// add all methods to self::cache[$class]['methods']
|
// add all methods to self::cache[$class]['methods']
|
||||||
zend_hash_apply_with_arguments(&class_ce->function_table TSRMLS_CC, twig_add_method_to_class, 1, class_methods);
|
zend_hash_apply_with_arguments(&class_ce->function_table APPLY_TSRMLS_CC, twig_add_method_to_class, 1, class_methods);
|
||||||
zend_hash_apply_with_arguments(&class_ce->properties_info TSRMLS_CC, twig_add_property_to_class, 2, &class_ce, class_properties);
|
zend_hash_apply_with_arguments(&class_ce->properties_info APPLY_TSRMLS_CC, twig_add_property_to_class, 2, &class_ce, class_properties);
|
||||||
|
|
||||||
if (object && Z_OBJ_HT_P(object)->get_properties) {
|
if (object && Z_OBJ_HT_P(object)->get_properties) {
|
||||||
HashTable *properties = Z_OBJ_HT_P(object)->get_properties(object TSRMLS_CC);
|
HashTable *properties = Z_OBJ_HT_P(object)->get_properties(object TSRMLS_CC);
|
||||||
zend_hash_apply_with_arguments(properties TSRMLS_CC, twig_add_dyn_property_to_class, 2, &class_ce, class_properties);
|
zend_hash_apply_with_arguments(properties APPLY_TSRMLS_CC, twig_add_dyn_property_to_class, 2, &class_ce, class_properties);
|
||||||
}
|
}
|
||||||
add_assoc_zval(class_info, "methods", class_methods);
|
add_assoc_zval(class_info, "methods", class_methods);
|
||||||
add_assoc_zval(class_info, "properties", class_properties);
|
add_assoc_zval(class_info, "properties", class_properties);
|
||||||
|
|||||||
Reference in New Issue
Block a user