X-Git-Url: https://git.m6w6.name/?p=m6w6%2Fext-http;a=blobdiff_plain;f=http_cookie_api.c;h=9b7c9b80f77d2fbe7cd16240583388b17341bd96;hp=b487e205cdf0fbc01e741ae24c5cea2addd07fe9;hb=29f0a9aa9ad7cc41157ff4e7865fa1db25bb218f;hpb=864a85259b0369033e49666603eed6661b01606c diff --git a/http_cookie_api.c b/http_cookie_api.c index b487e20..9b7c9b8 100644 --- a/http_cookie_api.c +++ b/http_cookie_api.c @@ -6,7 +6,7 @@ | modification, are permitted provided that the conditions mentioned | | in the accompanying LICENSE file are met. | +--------------------------------------------------------------------+ - | Copyright (c) 2004-2006, Michael Wallner | + | Copyright (c) 2004-2007, Michael Wallner | +--------------------------------------------------------------------+ */ @@ -284,7 +284,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)); } @@ -316,17 +316,14 @@ PHP_HTTP_API void _http_cookie_list_tostring(http_cookie_list *list, char **str, { phpstr buf; zval **val; - ulong idx = 0; - uint keylen = 0; - char *key = NULL; + HashKey key = initHashKey(0); HashPosition pos; phpstr_init(&buf); - FOREACH_HASH_KEYLENVAL(pos, &list->cookies, key, keylen, idx, val) { - if (key && keylen) { - append_encoded(&buf, key, keylen-1, Z_STRVAL_PP(val), Z_STRLEN_PP(val)); - key = NULL; + FOREACH_HASH_KEYVAL(pos, &list->cookies, key, val) { + if (key.type == HASH_KEY_IS_STRING && key.len) { + append_encoded(&buf, key.str, key.len-1, Z_STRVAL_PP(val), Z_STRLEN_PP(val)); } } @@ -342,10 +339,9 @@ PHP_HTTP_API void _http_cookie_list_tostring(http_cookie_list *list, char **str, efree(date); } - FOREACH_HASH_KEYLENVAL(pos, &list->extras, key, keylen, idx, val) { - if (key && keylen) { - append_encoded(&buf, key, keylen-1, Z_STRVAL_PP(val), Z_STRLEN_PP(val)); - key = NULL; + FOREACH_HASH_KEYVAL(pos, &list->extras, key, val) { + if (key.type == HASH_KEY_IS_STRING && key.len) { + append_encoded(&buf, key.str, key.len-1, Z_STRVAL_PP(val), Z_STRLEN_PP(val)); } }