X-Git-Url: https://git.m6w6.name/?a=blobdiff_plain;ds=sidebyside;f=php_json_post.c;h=c2e5ba69eabb4618b45c5c541a451472d351c959;hb=87da3f6139e8bea190638456477055db6d20a6eb;hp=fd3165cf182633176106d64f8ee5603db69f8154;hpb=27c5605043a78052ef303a573c5b93858ec4d0f4;p=m6w6%2Fext-json_post diff --git a/php_json_post.c b/php_json_post.c index fd3165c..c2e5ba6 100644 --- a/php_json_post.c +++ b/php_json_post.c @@ -63,13 +63,18 @@ static SAPI_POST_HANDLER_FUNC(php_json_post_handler) ZVAL_NULL(&tmp); - php_json_decode(&tmp, json->val, json->len, JSON_POST_G(flags), PG(max_input_nesting_level)); + php_json_decode_ex(&tmp, json->val, json->len, JSON_POST_G(flags), PG(max_input_nesting_level)); switch (Z_TYPE(tmp)) { case IS_OBJECT: case IS_ARRAY: - zval_dtor(arg); - ZVAL_COPY_VALUE(&PG(http_globals)[TRACK_VARS_POST], &tmp); + if (zend_hash_num_elements(HASH_OF(&tmp))) { + zval_dtor(arg); + ZVAL_COPY_VALUE(&PG(http_globals)[TRACK_VARS_POST], &tmp); + } else { + /* PHP-7.4 optimizes empty array */ + zval_ptr_dtor(&tmp); + } break; default: break; @@ -136,6 +141,9 @@ PHP_MINIT_FUNCTION(json_post) { NULL, 0, NULL, NULL } }; +#ifndef TSRMLS_CC +# define TSRMLS_CC +#endif sapi_register_post_entries(json_post_entries TSRMLS_CC); ZEND_INIT_MODULE_GLOBALS(json_post, php_json_post_init_globals, NULL);