X-Git-Url: https://git.m6w6.name/?p=m6w6%2Fext-http;a=blobdiff_plain;f=http_cookie_api.c;h=2f0d6c55fc7c57144aab811e6b8853667c2df035;hp=54d1d8e9b2b9079896f5fb6f5110d28801847589;hb=12937258a4daf4f8a94b4b0acb48b98e92f41afe;hpb=aca5a5a21e4514707a71cfa69cc19ae50a78f5d3 diff --git a/http_cookie_api.c b/http_cookie_api.c index 54d1d8e..2f0d6c5 100644 --- a/http_cookie_api.c +++ b/http_cookie_api.c @@ -77,7 +77,7 @@ PHP_HTTP_API void _http_cookie_list_free(http_cookie_list **list TSRMLS_DC) PHP_HTTP_API const char *_http_cookie_list_get_cookie(http_cookie_list *list, const char *name, size_t name_len TSRMLS_DC) { zval **cookie = NULL; - if ((SUCCESS != zend_hash_find(&list->cookies, (char *) name, name_len + 1, (void *) &cookie)) || (Z_TYPE_PP(cookie) != IS_STRING)) { + if ((SUCCESS != zend_hash_find(&list->cookies, HTTP_ZAPI_CONST_CAST(char *) name, name_len + 1, (void *) &cookie)) || (Z_TYPE_PP(cookie) != IS_STRING)) { return NULL; } return Z_STRVAL_PP(cookie); @@ -88,7 +88,7 @@ PHP_HTTP_API const char *_http_cookie_list_get_cookie(http_cookie_list *list, co PHP_HTTP_API const char *_http_cookie_list_get_extra(http_cookie_list *list, const char *name, size_t name_len TSRMLS_DC) { zval **extra = NULL; - if ((SUCCESS != zend_hash_find(&list->extras, (char *) name, name_len + 1, (void *) &extra)) || (Z_TYPE_PP(extra) != IS_STRING)) { + if ((SUCCESS != zend_hash_find(&list->extras, HTTP_ZAPI_CONST_CAST(char *) name, name_len + 1, (void *) &extra)) || (Z_TYPE_PP(extra) != IS_STRING)) { return NULL; } return Z_STRVAL_PP(extra); @@ -249,9 +249,12 @@ PHP_HTTP_API http_cookie_list *_http_cookie_list_fromstruct(http_cookie_list *li list->flags = (long) Z_DVAL_PP(tmp); break; case IS_STRING: - cpy = zval_copy(IS_LONG, *tmp); - list->flags = Z_LVAL_P(cpy); - zval_free(&cpy); + cpy = *tmp; + convert_to_long_ex(&cpy); + list->flags = Z_LVAL_PP(tmp); + if (cpy != *tmp) { + zval_ptr_dtor(&cpy); + } break; default: break; @@ -266,7 +269,8 @@ PHP_HTTP_API http_cookie_list *_http_cookie_list_fromstruct(http_cookie_list *li list->expires = (long) Z_DVAL_PP(tmp); break; case IS_STRING: - cpy = zval_copy(IS_LONG, *tmp); + cpy = *tmp; + convert_to_long_ex(&cpy); if (Z_LVAL_P(cpy)) { list->expires = Z_LVAL_P(cpy); } else { @@ -275,7 +279,9 @@ PHP_HTTP_API http_cookie_list *_http_cookie_list_fromstruct(http_cookie_list *li list->expires = expires; } } - zval_free(&cpy); + if (cpy != *tmp) { + zval_ptr_dtor(&cpy); + } break; default: break; @@ -284,7 +290,7 @@ PHP_HTTP_API http_cookie_list *_http_cookie_list_fromstruct(http_cookie_list *li if (SUCCESS == zend_hash_find(ht, "path", sizeof("path"), (void *) &tmp) && Z_TYPE_PP(tmp) == IS_STRING) { list->path = estrndup(Z_STRVAL_PP(tmp), Z_STRLEN_PP(tmp)); } - if (SUCCESS == zend_hash_find(ht, "domain", sizeof("domain"), (void *) &tmp)) { + if (SUCCESS == zend_hash_find(ht, "domain", sizeof("domain"), (void *) &tmp) && Z_TYPE_PP(tmp) == IS_STRING) { list->domain = estrndup(Z_STRVAL_PP(tmp), Z_STRLEN_PP(tmp)); }