X-Git-Url: https://git.m6w6.name/?p=m6w6%2Fext-http;a=blobdiff_plain;f=php_http_params.c;h=da78303d3e0affa311b0d3444ad0fa8b1a15b27e;hp=76313a0f7346ecbfdffe67b8f43e1efab945c94b;hb=1090760c65b564b30c0e30598cd19a1238e683f6;hpb=4fa594d2099832b6d1eea0c01cdee3b44109577f diff --git a/php_http_params.c b/php_http_params.c index 76313a0..da78303 100644 --- a/php_http_params.c +++ b/php_http_params.c @@ -16,11 +16,12 @@ static php_http_params_token_t def_param_sep = {",", 1}, *def_param_sep_ptr[] = static php_http_params_token_t def_arg_sep = {";", 1}, *def_arg_sep_ptr[] = {&def_arg_sep, NULL}; static php_http_params_token_t def_val_sep = {"=", 1}, *def_val_sep_ptr[] = {&def_val_sep, NULL}; static php_http_params_opts_t def_opts = { - .param = def_param_sep_ptr, - .arg = def_arg_sep_ptr, - .val = def_val_sep_ptr, - .defval = NULL, - .flags = PHP_HTTP_PARAMS_DEFAULT + {{0},0}, + def_param_sep_ptr, + def_arg_sep_ptr, + def_val_sep_ptr, + NULL, + PHP_HTTP_PARAMS_DEFAULT }; PHP_HTTP_API php_http_params_opts_t *php_http_params_opts_default_get(php_http_params_opts_t *opts) @@ -146,7 +147,12 @@ static void sanitize_dimension(zval *zv TSRMLS_DC) if (zend_hash_num_elements(Z_ARRVAL_P(arr))) { zval_dtor(zv); +#if PHP_VERSION_ID >= 50400 ZVAL_COPY_VALUE(zv, arr); +#else + zv->value = arr->value; + Z_TYPE_P(zv) = Z_TYPE_P(arr); +#endif FREE_ZVAL(arr); } else { zval_ptr_dtor(&arr); @@ -392,7 +398,12 @@ static void push_param(HashTable *params, php_http_params_state_t *state, const MAKE_STD_ZVAL(val); if (opts->defval) { +#if PHP_VERSION_ID >= 50400 ZVAL_COPY_VALUE(val, opts->defval); +#else + val->value = opts->defval->value; + Z_TYPE_P(val) = Z_TYPE_P(opts->defval); +#endif zval_copy_ctor(val); } else { ZVAL_TRUE(val); @@ -797,14 +808,11 @@ PHP_METHOD(HttpParams, __construct) zcopy = php_http_ztyp(IS_STRING, zparams); if (Z_STRLEN_P(zcopy)) { php_http_params_opts_t opts = { - .input = { - .str = Z_STRVAL_P(zcopy), - .len = Z_STRLEN_P(zcopy) - }, - .param = php_http_params_separator_init(zend_read_property(php_http_params_class_entry, getThis(), ZEND_STRL("param_sep"), 0 TSRMLS_CC) TSRMLS_CC), - .arg = php_http_params_separator_init(zend_read_property(php_http_params_class_entry, getThis(), ZEND_STRL("arg_sep"), 0 TSRMLS_CC) TSRMLS_CC), - .val = php_http_params_separator_init(zend_read_property(php_http_params_class_entry, getThis(), ZEND_STRL("val_sep"), 0 TSRMLS_CC) TSRMLS_CC), - .flags = flags + {Z_STRVAL_P(zcopy), Z_STRLEN_P(zcopy)}, + php_http_params_separator_init(zend_read_property(php_http_params_class_entry, getThis(), ZEND_STRL("param_sep"), 0 TSRMLS_CC) TSRMLS_CC), + php_http_params_separator_init(zend_read_property(php_http_params_class_entry, getThis(), ZEND_STRL("arg_sep"), 0 TSRMLS_CC) TSRMLS_CC), + php_http_params_separator_init(zend_read_property(php_http_params_class_entry, getThis(), ZEND_STRL("val_sep"), 0 TSRMLS_CC) TSRMLS_CC), + NULL, flags }; MAKE_STD_ZVAL(zparams);