X-Git-Url: https://git.m6w6.name/?p=m6w6%2Fext-http;a=blobdiff_plain;f=php_http_message_parser.c;h=fae16f1dd867f4f4648e9f478ac584dcacd5462e;hp=7cdbdea2d4af8ed8a7bdc00d4f44b0fa4d3076f9;hb=41cb14f7126c9e0c13fc9df9e4e385c2a57bcb3b;hpb=90b1ee501344343749acd04e8fba9cae30335846 diff --git a/php_http_message_parser.c b/php_http_message_parser.c index 7cdbdea..fae16f1 100644 --- a/php_http_message_parser.c +++ b/php_http_message_parser.c @@ -61,19 +61,21 @@ php_http_message_parser_t *php_http_message_parser_init(php_http_message_parser_ php_http_message_parser_state_t php_http_message_parser_state_push(php_http_message_parser_t *parser, unsigned argc, ...) { - php_http_message_parser_state_t state; + php_http_message_parser_state_t state = PHP_HTTP_MESSAGE_PARSER_STATE_FAILURE; va_list va_args; unsigned i; - /* short circuit */ - ZEND_PTR_STACK_RESIZE_IF_NEEDED((&parser->stack), argc); + if (argc > 0) { + /* short circuit */ + ZEND_PTR_STACK_RESIZE_IF_NEEDED((&parser->stack), argc); - va_start(va_args, argc); - for (i = 0; i < argc; ++i) { - state = va_arg(va_args, php_http_message_parser_state_t); - zend_ptr_stack_push(&parser->stack, (void *) state); + va_start(va_args, argc); + for (i = 0; i < argc; ++i) { + state = va_arg(va_args, php_http_message_parser_state_t); + zend_ptr_stack_push(&parser->stack, (void *) state); + } + va_end(va_args); } - va_end(va_args); return state; } @@ -139,7 +141,7 @@ php_http_message_parser_state_t php_http_message_parser_parse_stream(php_http_me case PHP_HTTP_MESSAGE_PARSER_STATE_HEADER_DONE: /* read line */ php_stream_get_line(s, buf->data + buf->used, buf->free, &justread); - /* of we fail reading a whole line, try a single char */ + /* if we fail reading a whole line, try a single char */ if (!justread) { int c = php_stream_getc(s);