X-Git-Url: https://git.m6w6.name/?p=m6w6%2Fext-http;a=blobdiff_plain;f=http_headers_api.c;h=8a4ecc5591f8d9a9ee8c2b4e918a755c56facd4d;hp=55be354afbc50feaf56817e64812647511b1b6ac;hb=b97243b9bffae6ec360cfa7ea2dd1c7f1c3a556f;hpb=5efb94c93bc4c1d4873706958962acc4313477f3 diff --git a/http_headers_api.c b/http_headers_api.c index 55be354..8a4ecc5 100644 --- a/http_headers_api.c +++ b/http_headers_api.c @@ -152,9 +152,7 @@ PHP_HTTP_API HashTable *_http_negotiate_q(const char *header, HashTable *support if (separator = strchr(Z_STRVAL_PP(entry), ';')) { const char *ptr = separator; - do { - ++ptr; - } while ((*ptr == ' ') || (*ptr == 'q') || (*ptr == '=')); + while (*++ptr && !isdigit(*ptr)); quality = strtod(ptr, NULL); identifier = estrndup(Z_STRVAL_PP(entry), separator - Z_STRVAL_PP(entry)); @@ -333,7 +331,8 @@ PHP_HTTP_API STATUS _http_parse_headers_ex(const char *header, HashTable *header size_t header_len; zval array; - Z_ARRVAL(array) = headers; + INIT_ZARR(array, headers); + if (body) { header_len = body - header; } else { @@ -343,7 +342,7 @@ PHP_HTTP_API STATUS _http_parse_headers_ex(const char *header, HashTable *header while (header_len >= (size_t) (line - begin)) { int value_len = 0; - + /* note: valgrind may choke on that -- should be safe though */ switch (*line++) { case ':':