X-Git-Url: https://git.m6w6.name/?p=m6w6%2Fext-http;a=blobdiff_plain;f=php_http_api.h;h=44071222526466386977c8e557747708b2bf4c9d;hp=7163dc1fd8ab48118cb16a762550b3236960604d;hb=39cc1a2cc407bc6ca89829cffd1bfafd463720ca;hpb=22616d7660e06425a33ffefe748d4aa6067c2a43 diff --git a/php_http_api.h b/php_http_api.h index 7163dc1..4407122 100644 --- a/php_http_api.h +++ b/php_http_api.h @@ -267,7 +267,9 @@ static inline zval *_convert_to_type(int type, zval *z) #define convert_to_type_ex(t, z, p) _convert_to_type_ex((t), (z), (p)) static inline zval *_convert_to_type_ex(int type, zval *z, zval **p) { - *p = z; + if (p) { + *p = z; + } if (Z_TYPE_P(z) != type) { switch (type) { case IS_NULL: convert_to_null_ex(&z); break; @@ -279,37 +281,16 @@ static inline zval *_convert_to_type_ex(int type, zval *z, zval **p) case IS_OBJECT: convert_to_object_ex(&z); break; } } - if (*p == z) { - *p = NULL; - } else { - *p = z; + if (p) { + if (*p == z) { + *p = NULL; + } else { + *p = z; + } } return z; } -#define zval_copy(t, z) _zval_copy((t), (z) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC) -static inline zval *_zval_copy(int type, zval *z ZEND_FILE_LINE_DC ZEND_FILE_LINE_ORIG_DC) -{ - zval *copy; - - copy = emalloc_rel(sizeof(zval)); - *copy = *z; - zval_copy_ctor(copy); - convert_to_type(type, copy); - copy->refcount = 0; - copy->is_ref = 0; - - return copy; -} - -#define zval_free(z) _zval_free(z) -static inline void _zval_free(zval **z) -{ - zval_dtor(*z); - FREE_ZVAL(*z); - *z = NULL; -} - typedef struct _HashKey { char *str; uint len; @@ -341,10 +322,10 @@ typedef struct _HashKey { #define array_copy(src, dst) zend_hash_copy(dst, src, (copy_ctor_func_t) zval_add_ref, NULL, sizeof(zval *)) #define ARRAY_JOIN_STRONLY 1 #define ARRAY_JOIN_PRETTIFY 2 -#define array_join(src, dst, append, flags) zend_hash_apply_with_arguments(src, (append)?apply_array_append_func:apply_array_merge_func, 2, dst, (int)flags) +#define array_join(src, dst, append, flags) zend_hash_apply_with_arguments(src HTTP_ZAPI_HASH_TSRMLS_CC, (append)?apply_array_append_func:apply_array_merge_func, 2, dst, (int)flags) -extern int apply_array_append_func(void *pDest, int num_args, va_list args, zend_hash_key *hash_key); -extern int apply_array_merge_func(void *pDest, int num_args, va_list args, zend_hash_key *hash_key); +extern int apply_array_append_func(void *pDest HTTP_ZAPI_HASH_TSRMLS_DC, int num_args, va_list args, zend_hash_key *hash_key); +extern int apply_array_merge_func(void *pDest HTTP_ZAPI_HASH_TSRMLS_DC, int num_args, va_list args, zend_hash_key *hash_key); #endif