X-Git-Url: https://git.m6w6.name/?a=blobdiff_plain;f=src%2Fphp_http_params.c;h=90710684deabe6d08bd5e81d8e1563086f0095a6;hb=749dbbaa0e7c5e33d27121dab0f53bda85a67339;hp=98ac06f7c658633eb437d6d3bca3fc7d7532d2b7;hpb=75323793e113441c79c18cd9a57533dd592d3ff7;p=m6w6%2Fext-http diff --git a/src/php_http_params.c b/src/php_http_params.c index 98ac06f..9071068 100644 --- a/src/php_http_params.c +++ b/src/php_http_params.c @@ -470,7 +470,7 @@ static void merge_param(HashTable *params, zval *zdata, zval ***current_param, z while (Z_TYPE_PP(zdata_ptr) == IS_ARRAY && SUCCESS == zend_hash_get_current_data(Z_ARRVAL_PP(zdata_ptr), (void *) &test_ptr) ) { - if (Z_TYPE_PP(test_ptr) == IS_ARRAY) { + if (Z_TYPE_PP(test_ptr) == IS_ARRAY && Z_TYPE_PP(ptr) == IS_ARRAY) { /* now find key in ptr */ if (HASH_KEY_IS_STRING == zend_hash_get_current_key_ex(Z_ARRVAL_PP(zdata_ptr), &hkey.str, &hkey.len, &hkey.num, hkey.dup, NULL)) { @@ -523,8 +523,12 @@ static void merge_param(HashTable *params, zval *zdata, zval ***current_param, z static void push_param(HashTable *params, php_http_params_state_t *state, const php_http_params_opts_t *opts TSRMLS_DC) { if (state->val.str) { - if (0 < (state->val.len = state->input.str - state->val.str)) { + if (!state->current.val) { + return; + } else if (0 < (state->val.len = state->input.str - state->val.str)) { sanitize_value(opts->flags, state->val.str, state->val.len, *(state->current.val), state->rfc5987 TSRMLS_CC); + } else { + ZVAL_EMPTY_STRING(*(state->current.val)); } state->rfc5987 = 0; } else if (state->arg.str) {