Merge branch 'PHP-7.4'

* PHP-7.4:
  Cheaper checks for exceptions thrown from __toString()
This commit is contained in:
Dmitry Stogov 2019-06-06 02:23:17 +03:00
commit e029cc4dd4
25 changed files with 144 additions and 132 deletions

View File

@ -663,8 +663,9 @@ ZEND_FUNCTION(error_reporting)
old_error_reporting = EG(error_reporting);
if (ZEND_NUM_ARGS() != 0) {
zend_string *new_val = zval_get_string(err);
if (UNEXPECTED(EG(exception))) {
zend_string *new_val = zval_try_get_string(err);
if (UNEXPECTED(!new_val)) {
return;
}

View File

@ -1539,8 +1539,8 @@ static zend_never_inline void zend_assign_to_string_offset(zval *str, zval *dim,
if (Z_TYPE_P(value) != IS_STRING) {
/* Convert to string, just the time to pick the 1st byte */
zend_string *tmp = zval_get_string_func(value);
if (UNEXPECTED(EG(exception))) {
zend_string *tmp = zval_try_get_string_func(value);
if (UNEXPECTED(!tmp)) {
if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
ZVAL_UNDEF(EX_VAR(opline->result.var));
}
@ -3989,11 +3989,13 @@ static zend_never_inline zend_op_array* ZEND_FASTCALL zend_include_or_eval(zval
ZVAL_UNDEF(&tmp_inc_filename);
if (Z_TYPE_P(inc_filename) != IS_STRING) {
ZVAL_STR(&tmp_inc_filename, zval_get_string_func(inc_filename));
inc_filename = &tmp_inc_filename;
if (UNEXPECTED(EG(exception))) {
zend_string *tmp = zval_try_get_string_func(inc_filename);
if (UNEXPECTED(!tmp)) {
return NULL;
}
ZVAL_STR(&tmp_inc_filename, tmp);
inc_filename = &tmp_inc_filename;
}
switch (type) {

View File

@ -590,14 +590,15 @@ try_again:
ZEND_API zend_bool ZEND_FASTCALL _try_convert_to_string(zval *op)
{
if (Z_TYPE_P(op) != IS_STRING) {
zend_string *str = zval_get_string_func(op);
if (UNEXPECTED(EG(exception))) {
return 0;
}
zval_ptr_dtor(op);
ZVAL_STR(op, str);
zend_string *str;
ZEND_ASSERT(Z_TYPE_P(op) != IS_STRING);
str = zval_try_get_string_func(op);
if (UNEXPECTED(!str)) {
return 0;
}
zval_ptr_dtor(op);
ZVAL_STR(op, str);
return 1;
}
@ -848,7 +849,7 @@ try_again:
}
/* }}} */
ZEND_API zend_string* ZEND_FASTCALL zval_get_string_func(zval *op) /* {{{ */
static zend_always_inline zend_string* __zval_get_string_func(zval *op, zend_bool try) /* {{{ */
{
try_again:
switch (Z_TYPE_P(op)) {
@ -880,7 +881,7 @@ try_again:
if (!EG(exception)) {
zend_throw_error(NULL, "Object of class %s could not be converted to string", ZSTR_VAL(Z_OBJCE_P(op)->name));
}
return ZSTR_EMPTY_ALLOC();
return try ? NULL : ZSTR_EMPTY_ALLOC();
}
case IS_REFERENCE:
op = Z_REFVAL_P(op);
@ -893,13 +894,15 @@ try_again:
}
/* }}} */
ZEND_API zend_string* ZEND_FASTCALL zval_get_string_func(zval *op) /* {{{ */
{
return __zval_get_string_func(op, 0);
}
/* }}} */
ZEND_API zend_string* ZEND_FASTCALL zval_try_get_string_func(zval *op) /* {{{ */
{
zend_string *str = zval_get_string_func(op);
if (UNEXPECTED(EG(exception))) {
return NULL;
}
return str;
return __zval_get_string_func(op, 1);
}
/* }}} */

View File

@ -1676,8 +1676,8 @@ ZEND_VM_HELPER(zend_fetch_var_address_helper, CONST|TMPVAR|CV, UNUSED, int type)
if (OP1_TYPE == IS_CV && UNEXPECTED(Z_TYPE_P(varname) == IS_UNDEF)) {
ZVAL_UNDEFINED_OP1();
}
name = zval_get_tmp_string(varname, &tmp_name);
if (UNEXPECTED(EG(exception))) {
name = zval_try_get_tmp_string(varname, &tmp_name);
if (UNEXPECTED(!name)) {
FREE_OP1();
ZVAL_UNDEF(EX_VAR(opline->result.var));
HANDLE_EXCEPTION();
@ -5952,8 +5952,8 @@ ZEND_VM_HANDLER(74, ZEND_UNSET_VAR, CONST|TMPVAR|CV, UNUSED, VAR_FETCH)
if (OP1_TYPE == IS_CV && UNEXPECTED(Z_TYPE_P(varname) == IS_UNDEF)) {
varname = ZVAL_UNDEFINED_OP1();
}
name = zval_get_tmp_string(varname, &tmp_name);
if (UNEXPECTED(EG(exception))) {
name = zval_try_get_tmp_string(varname, &tmp_name);
if (UNEXPECTED(!name)) {
FREE_OP1();
HANDLE_EXCEPTION();
}

View File

@ -8500,8 +8500,8 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_fetch_var_address_helper_SPEC_
if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_P(varname) == IS_UNDEF)) {
ZVAL_UNDEFINED_OP1();
}
name = zval_get_tmp_string(varname, &tmp_name);
if (UNEXPECTED(EG(exception))) {
name = zval_try_get_tmp_string(varname, &tmp_name);
if (UNEXPECTED(!name)) {
ZVAL_UNDEF(EX_VAR(opline->result.var));
HANDLE_EXCEPTION();
@ -9011,8 +9011,8 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_UNSET_VAR_SPEC_CONST_UNUSED_HA
if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_P(varname) == IS_UNDEF)) {
varname = ZVAL_UNDEFINED_OP1();
}
name = zval_get_tmp_string(varname, &tmp_name);
if (UNEXPECTED(EG(exception))) {
name = zval_try_get_tmp_string(varname, &tmp_name);
if (UNEXPECTED(!name)) {
HANDLE_EXCEPTION();
}
@ -16009,8 +16009,8 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_fetch_var_address_helper_SPEC_
if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(Z_TYPE_P(varname) == IS_UNDEF)) {
ZVAL_UNDEFINED_OP1();
}
name = zval_get_tmp_string(varname, &tmp_name);
if (UNEXPECTED(EG(exception))) {
name = zval_try_get_tmp_string(varname, &tmp_name);
if (UNEXPECTED(!name)) {
zval_ptr_dtor_nogc(free_op1);
ZVAL_UNDEF(EX_VAR(opline->result.var));
HANDLE_EXCEPTION();
@ -16134,8 +16134,8 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_UNSET_VAR_SPEC_TMPVAR_UNUSED_H
if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(Z_TYPE_P(varname) == IS_UNDEF)) {
varname = ZVAL_UNDEFINED_OP1();
}
name = zval_get_tmp_string(varname, &tmp_name);
if (UNEXPECTED(EG(exception))) {
name = zval_try_get_tmp_string(varname, &tmp_name);
if (UNEXPECTED(!name)) {
zval_ptr_dtor_nogc(free_op1);
HANDLE_EXCEPTION();
}
@ -48432,8 +48432,8 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_fetch_var_address_helper_SPEC_
if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_P(varname) == IS_UNDEF)) {
ZVAL_UNDEFINED_OP1();
}
name = zval_get_tmp_string(varname, &tmp_name);
if (UNEXPECTED(EG(exception))) {
name = zval_try_get_tmp_string(varname, &tmp_name);
if (UNEXPECTED(!name)) {
ZVAL_UNDEF(EX_VAR(opline->result.var));
HANDLE_EXCEPTION();
@ -49259,8 +49259,8 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_UNSET_VAR_SPEC_CV_UNUSED_HANDL
if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_P(varname) == IS_UNDEF)) {
varname = ZVAL_UNDEFINED_OP1();
}
name = zval_get_tmp_string(varname, &tmp_name);
if (UNEXPECTED(EG(exception))) {
name = zval_try_get_tmp_string(varname, &tmp_name);
if (UNEXPECTED(!name)) {
HANDLE_EXCEPTION();
}

View File

@ -160,8 +160,8 @@ int dom_attr_value_write(dom_object *obj, zval *newval)
return FAILURE;
}
str = zval_get_string(newval);
if (EG(exception)) {
str = zval_try_get_string(newval);
if (UNEXPECTED(!str)) {
return FAILURE;
}

View File

@ -104,8 +104,8 @@ int dom_characterdata_data_write(dom_object *obj, zval *newval)
return FAILURE;
}
str = zval_get_string(newval);
if (EG(exception)) {
str = zval_try_get_string(newval);
if (UNEXPECTED(!str)) {
return FAILURE;
}

View File

@ -337,8 +337,8 @@ int dom_document_encoding_write(dom_object *obj, zval *newval)
return FAILURE;
}
str = zval_get_string(newval);
if (EG(exception)) {
str = zval_try_get_string(newval);
if (UNEXPECTED(!str)) {
return FAILURE;
}
@ -434,8 +434,8 @@ int dom_document_version_write(dom_object *obj, zval *newval)
return FAILURE;
}
str = zval_get_string(newval);
if (EG(exception)) {
str = zval_try_get_string(newval);
if (UNEXPECTED(!str)) {
return FAILURE;
}
@ -665,8 +665,8 @@ int dom_document_document_uri_write(dom_object *obj, zval *newval)
return FAILURE;
}
str = zval_get_string(newval);
if (EG(exception)) {
str = zval_try_get_string(newval);
if (UNEXPECTED(!str)) {
return FAILURE;
}

View File

@ -330,8 +330,8 @@ int dom_node_node_value_write(dom_object *obj, zval *newval)
return FAILURE;
}
str = zval_get_string(newval);
if (EG(exception)) {
str = zval_try_get_string(newval);
if (UNEXPECTED(!str)) {
return FAILURE;
}
@ -724,8 +724,8 @@ int dom_node_prefix_write(dom_object *obj, zval *newval)
nsnode = xmlDocGetRootElement(nodep->doc);
}
}
str = zval_get_string(newval);
if (EG(exception)) {
str = zval_try_get_string(newval);
if (UNEXPECTED(!str)) {
return FAILURE;
}
@ -861,8 +861,8 @@ int dom_node_text_content_write(dom_object *obj, zval *newval)
return FAILURE;
}
str = zval_get_string(newval);
if (EG(exception)) {
str = zval_try_get_string(newval);
if (UNEXPECTED(!str)) {
return FAILURE;
}

View File

@ -138,8 +138,8 @@ int dom_processinginstruction_data_write(dom_object *obj, zval *newval)
return FAILURE;
}
str = zval_get_string(newval);
if (EG(exception)) {
str = zval_try_get_string(newval);
if (UNEXPECTED(!str)) {
return FAILURE;
}

View File

@ -2286,8 +2286,8 @@ PHP_FUNCTION(iconv_mime_encode)
if ((pzval = zend_hash_str_find_deref(Z_ARRVAL_P(pref), "line-break-chars", sizeof("line-break-chars") - 1)) != NULL) {
if (Z_TYPE_P(pzval) != IS_STRING) {
tmp_str = zval_get_string_func(pzval);
if (EG(exception)) {
tmp_str = zval_try_get_string_func(pzval);
if (UNEXPECTED(!tmp_str)) {
return;
}
lfchars = ZSTR_VAL(tmp_str);

View File

@ -807,8 +807,8 @@ php_mb_parse_encoding_array(zval *array, const mbfl_encoding ***return_list, siz
bauto = 0;
n = 0;
ZEND_HASH_FOREACH_VAL(target_hash, hash_entry) {
zend_string *encoding_str = zval_get_string(hash_entry);
if (EG(exception)) {
zend_string *encoding_str = zval_try_get_string(hash_entry);
if (UNEXPECTED(!encoding_str)) {
ret = FAILURE;
break;
}
@ -3243,8 +3243,8 @@ PHP_FUNCTION(mb_convert_encoding)
_from_encodings = NULL;
ZEND_HASH_FOREACH_VAL(target_hash, hash_entry) {
zend_string *encoding_str = zval_get_string(hash_entry);
if (EG(exception)) {
zend_string *encoding_str = zval_try_get_string(hash_entry);
if (UNEXPECTED(!encoding_str)) {
if (_from_encodings) {
efree(_from_encodings);
}

View File

@ -1930,8 +1930,8 @@ php_oci_bind *php_oci_bind_array_helper_date(zval *var, zend_long max_table_leng
bind->array.element_lengths[i] = sizeof(OCIDate);
}
if ((i < bind->array.current_length) && (entry = zend_hash_get_current_data(hash)) != NULL) {
zend_string *entry_str = zval_get_string(entry);
if (EG(exception)) {
zend_string *entry_str = zval_try_get_string(entry);
if (UNEXPECTED(!entry_str)) {
efree(bind->array.element_lengths);
efree(bind->array.elements);
efree(bind);

View File

@ -2675,8 +2675,8 @@ static X509_STORE *php_openssl_setup_verify(zval *calist)
if (calist && (Z_TYPE_P(calist) == IS_ARRAY)) {
ZEND_HASH_FOREACH_VAL(Z_ARRVAL_P(calist), item) {
zend_string *str = zval_get_string(item);
if (EG(exception)) {
zend_string *str = zval_try_get_string(item);
if (UNEXPECTED(!str)) {
return NULL;
}
@ -3160,8 +3160,8 @@ static int php_openssl_make_REQ(struct php_x509_request * req, X509_REQ * csr, z
if (strindex) {
int nid = OBJ_txt2nid(ZSTR_VAL(strindex));
if (nid != NID_undef) {
zend_string *str_item = zval_get_string(item);
if (EG(exception)) {
zend_string *str_item = zval_try_get_string(item);
if (UNEXPECTED(!str_item)) {
return FAILURE;
}
if (!X509_NAME_add_entry_by_NID(subj, nid, MBSTRING_UTF8,
@ -3243,8 +3243,8 @@ static int php_openssl_make_REQ(struct php_x509_request * req, X509_REQ * csr, z
nid = OBJ_txt2nid(ZSTR_VAL(strindex));
if (nid != NID_undef) {
zend_string *str_item = zval_get_string(item);
if (EG(exception)) {
zend_string *str_item = zval_try_get_string(item);
if (UNEXPECTED(!str_item)) {
return FAILURE;
}
if (!X509_NAME_add_entry_by_NID(subj, nid, MBSTRING_UTF8, (unsigned char*)ZSTR_VAL(str_item), -1, -1, 0)) {
@ -5387,8 +5387,8 @@ PHP_FUNCTION(openssl_pkcs7_encrypt)
/* tack on extra headers */
if (zheaders) {
ZEND_HASH_FOREACH_STR_KEY_VAL(Z_ARRVAL_P(zheaders), strindex, zcertval) {
zend_string *str = zval_get_string(zcertval);
if (EG(exception)) {
zend_string *str = zval_try_get_string(zcertval);
if (UNEXPECTED(!str)) {
goto clean_exit;
}
if (strindex) {
@ -5607,8 +5607,8 @@ PHP_FUNCTION(openssl_pkcs7_sign)
int ret;
ZEND_HASH_FOREACH_STR_KEY_VAL(Z_ARRVAL_P(zheaders), strindex, hval) {
zend_string *str = zval_get_string(hval);
if (EG(exception)) {
zend_string *str = zval_try_get_string(hval);
if (UNEXPECTED(!str)) {
goto clean_exit;
}
if (strindex) {

View File

@ -1484,8 +1484,8 @@ static int php_openssl_enable_server_sni(php_stream *stream, php_openssl_netstre
return FAILURE;
}
local_cert_str = zval_get_string(local_cert);
if (EG(exception)) {
local_cert_str = zval_try_get_string(local_cert);
if (UNEXPECTED(!local_cert_str)) {
return FAILURE;
}
if (!VCWD_REALPATH(ZSTR_VAL(local_cert_str), resolved_cert_path_buff)) {
@ -1506,8 +1506,8 @@ static int php_openssl_enable_server_sni(php_stream *stream, php_openssl_netstre
return FAILURE;
}
local_pk_str = zval_get_string(local_pk);
if (EG(exception)) {
local_pk_str = zval_try_get_string(local_pk);
if (UNEXPECTED(!local_pk_str)) {
return FAILURE;
}
if (!VCWD_REALPATH(ZSTR_VAL(local_pk_str), resolved_pk_path_buff)) {

View File

@ -465,8 +465,8 @@ static int firebird_handle_set_attribute(pdo_dbh_t *dbh, zend_long attr, zval *v
case PDO_FB_ATTR_DATE_FORMAT:
{
zend_string *str = zval_get_string(val);
if (EG(exception)) {
zend_string *str = zval_try_get_string(val);
if (UNEXPECTED(!str)) {
return 0;
}
if (H->date_format) {
@ -479,8 +479,8 @@ static int firebird_handle_set_attribute(pdo_dbh_t *dbh, zend_long attr, zval *v
case PDO_FB_ATTR_TIME_FORMAT:
{
zend_string *str = zval_get_string(val);
if (EG(exception)) {
zend_string *str = zval_try_get_string(val);
if (UNEXPECTED(!str)) {
return 0;
}
if (H->time_format) {
@ -493,8 +493,8 @@ static int firebird_handle_set_attribute(pdo_dbh_t *dbh, zend_long attr, zval *v
case PDO_FB_ATTR_TIMESTAMP_FORMAT:
{
zend_string *str = zval_get_string(val);
if (EG(exception)) {
zend_string *str = zval_try_get_string(val);
if (UNEXPECTED(!str)) {
return 0;
}
if (H->timestamp_format) {

View File

@ -460,8 +460,8 @@ static int oci_handle_set_attribute(pdo_dbh_t *dbh, zend_long attr, zval *val) /
case PDO_OCI_ATTR_ACTION:
{
#if (OCI_MAJOR_VERSION >= 10)
zend_string *action = zval_get_string(val);
if (EG(exception)) {
zend_string *action = zval_try_get_string(val);
if (UNEXPECTED(!action)) {
return 0;
}
@ -481,8 +481,8 @@ static int oci_handle_set_attribute(pdo_dbh_t *dbh, zend_long attr, zval *val) /
case PDO_OCI_ATTR_CLIENT_INFO:
{
#if (OCI_MAJOR_VERSION >= 10)
zend_string *client_info = zval_get_string(val);
if (EG(exception)) {
zend_string *client_info = zval_try_get_string(val);
if (UNEXPECTED(!client_info)) {
return 0;
}
@ -502,8 +502,8 @@ static int oci_handle_set_attribute(pdo_dbh_t *dbh, zend_long attr, zval *val) /
case PDO_OCI_ATTR_CLIENT_IDENTIFIER:
{
#if (OCI_MAJOR_VERSION >= 10)
zend_string *identifier = zval_get_string(val);
if (EG(exception)) {
zend_string *identifier = zval_try_get_string(val);
if (UNEXPECTED(!identifier)) {
return 0;
}
@ -523,8 +523,8 @@ static int oci_handle_set_attribute(pdo_dbh_t *dbh, zend_long attr, zval *val) /
case PDO_OCI_ATTR_MODULE:
{
#if (OCI_MAJOR_VERSION >= 10)
zend_string *module = zval_get_string(val);
if (EG(exception)) {
zend_string *module = zval_try_get_string(val);
if (UNEXPECTED(!module)) {
return 0;
}

View File

@ -4284,8 +4284,8 @@ PHP_FUNCTION(pg_copy_from)
PQclear(pgsql_result);
#if HAVE_PQPUTCOPYDATA
ZEND_HASH_FOREACH_VAL(Z_ARRVAL_P(pg_rows), value) {
zend_string *tmp = zval_get_string(value);
if (EG(exception)) {
zend_string *tmp = zval_try_get_string(value);
if (UNEXPECTED(!tmp)) {
return;
}
query = (char *)emalloc(ZSTR_LEN(tmp) + 2);
@ -4309,8 +4309,8 @@ PHP_FUNCTION(pg_copy_from)
}
#else
ZEND_HASH_FOREACH_VAL(Z_ARRVAL_P(pg_rows), value) {
zend_string *tmp = zval_get_string(value);
if (EG(exception)) {
zend_string *tmp = zval_try_get_string(value);
if (UNEXPECTED(!tmp)) {
return;
}
query = (char *)emalloc(ZSTR_LEN(tmp) + 2);
@ -5173,8 +5173,8 @@ PHP_FUNCTION(pg_send_execute)
if (Z_TYPE_P(tmp) == IS_NULL) {
params[i] = NULL;
} else {
zend_string *tmp_str = zval_get_string(tmp);
if (EG(exception)) {
zend_string *tmp_str = zval_try_get_string(tmp);
if (UNEXPECTED(!tmp)) {
_php_pgsql_free_params(params, num_params);
return;
}

View File

@ -2275,8 +2275,8 @@ ZEND_METHOD(reflection_parameter, __construct)
if (Z_TYPE_P(classref) == IS_OBJECT) {
ce = Z_OBJCE_P(classref);
} else {
name = zval_get_string(classref);
if (EG(exception)) {
name = zval_try_get_string(classref);
if (UNEXPECTED(!name)) {
return;
}
if ((ce = zend_lookup_class(name)) == NULL) {
@ -2288,8 +2288,8 @@ ZEND_METHOD(reflection_parameter, __construct)
zend_string_release(name);
}
name = zval_get_string(method);
if (EG(exception)) {
name = zval_try_get_string(method);
if (UNEXPECTED(!name)) {
return;
}

View File

@ -258,11 +258,12 @@ long_dim:
name = NULL;
} else {
if (Z_TYPE_P(member) != IS_STRING) {
ZVAL_STR(&tmp_zv, zval_get_string_func(member));
member = &tmp_zv;
if (EG(exception)) {
zend_string *str = zval_try_get_string_func(member);
if (UNEXPECTED(!str)) {
return &EG(uninitialized_zval);
}
ZVAL_STR(&tmp_zv, str);
member = &tmp_zv;
}
name = Z_STRVAL_P(member);
}
@ -459,8 +460,8 @@ long_dim:
}
} else {
if (Z_TYPE_P(member) != IS_STRING) {
trim_str = zval_get_string_func(member);
if (EG(exception)) {
trim_str = zval_try_get_string_func(member);
if (UNEXPECTED(!trim_str)) {
return &EG(error_zval);
}
@ -726,11 +727,12 @@ static int sxe_prop_dim_exists(zend_object *object, zval *member, int check_empt
zval tmp_zv;
if (Z_TYPE_P(member) != IS_STRING && Z_TYPE_P(member) != IS_LONG) {
ZVAL_STR(&tmp_zv, zval_get_string_func(member));
member = &tmp_zv;
if (EG(exception)) {
zend_string *str = zval_try_get_string_func(member);
if (UNEXPECTED(!str)) {
return 0;
}
ZVAL_STR(&tmp_zv, str);
member = &tmp_zv;
}
sxe = php_sxe_fetch_object(object);
@ -850,11 +852,12 @@ static void sxe_prop_dim_delete(zend_object *object, zval *member, zend_bool ele
int test = 0;
if (Z_TYPE_P(member) != IS_STRING && Z_TYPE_P(member) != IS_LONG) {
ZVAL_STR(&tmp_zv, zval_get_string_func(member));
member = &tmp_zv;
if (EG(exception)) {
zend_string *str = zval_try_get_string_func(member);
if (UNEXPECTED(!str)) {
return;
}
ZVAL_STR(&tmp_zv, str);
member = &tmp_zv;
}
sxe = php_sxe_fetch_object(object);

View File

@ -2022,8 +2022,8 @@ SPL_METHOD(RegexIterator, accept)
case REGIT_MODE_REPLACE: {
zval *replacement = zend_read_property(intern->std.ce, ZEND_THIS, "replacement", sizeof("replacement")-1, 1, &rv);
zend_string *replacement_str = zval_get_string(replacement);
if (EG(exception)) {
zend_string *replacement_str = zval_try_get_string(replacement);
if (UNEXPECTED(!replacement_str)) {
return;
}

View File

@ -802,8 +802,8 @@ static int sqlite3_do_callback(struct php_sqlite3_fci *fc, zval *cb, int argc, s
break;
default: {
zend_string *str = zval_get_string(&retval);
if (EG(exception)) {
zend_string *str = zval_try_get_string(&retval);
if (UNEXPECTED(!str)) {
ret = FAILURE;
break;
}
@ -1487,8 +1487,8 @@ static int php_sqlite3_bind_params(php_sqlite3_stmt *stmt_obj) /* {{{ */
}
case SQLITE3_TEXT: {
zend_string *str = zval_get_string(parameter);
if (EG(exception)) {
zend_string *str = zval_try_get_string(parameter);
if (UNEXPECTED(!str)) {
return FAILURE;
}
return_code = sqlite3_bind_text(stmt_obj->stmt, param->param_number, ZSTR_VAL(str), ZSTR_LEN(str), SQLITE_TRANSIENT);

View File

@ -240,8 +240,8 @@ PHP_FUNCTION(assert_options)
case ASSERT_ACTIVE:
oldint = ASSERTG(active);
if (ac == 2) {
zend_string *value_str = zval_get_string(value);
if (EG(exception)) {
zend_string *value_str = zval_try_get_string(value);
if (UNEXPECTED(!value_str)) {
return;
}
@ -256,8 +256,8 @@ PHP_FUNCTION(assert_options)
case ASSERT_BAIL:
oldint = ASSERTG(bail);
if (ac == 2) {
zend_string *value_str = zval_get_string(value);
if (EG(exception)) {
zend_string *value_str = zval_try_get_string(value);
if (UNEXPECTED(!value_str)) {
return;
}
@ -272,8 +272,8 @@ PHP_FUNCTION(assert_options)
case ASSERT_WARNING:
oldint = ASSERTG(warning);
if (ac == 2) {
zend_string *value_str = zval_get_string(value);
if (EG(exception)) {
zend_string *value_str = zval_try_get_string(value);
if (UNEXPECTED(!value_str)) {
return;
}
@ -302,8 +302,8 @@ PHP_FUNCTION(assert_options)
case ASSERT_EXCEPTION:
oldint = ASSERTG(exception);
if (ac == 2) {
zend_string *val = zval_get_string(value);
if (EG(exception)) {
zend_string *val = zval_try_get_string(value);
if (UNEXPECTED(!val)) {
return;
}

View File

@ -4689,8 +4689,8 @@ PHP_FUNCTION(setlocale)
plocale = &args[i];
}
loc = zval_get_string(plocale);
if (EG(exception)) {
loc = zval_try_get_string(plocale);
if (UNEXPECTED(!loc)) {
return;
}

View File

@ -759,14 +759,17 @@ PHP_FUNCTION(xsl_xsltprocessor_set_parameter)
intern = Z_XSL_P(id);
ZEND_HASH_FOREACH_STR_KEY_VAL(Z_ARRVAL_P(array_value), string_key, entry) {
zval tmp;
zend_string *str;
if (string_key == NULL) {
php_error_docref(NULL, E_WARNING, "Invalid parameter array");
RETURN_FALSE;
}
ZVAL_STR(&tmp, zval_get_string(entry));
if (EG(exception)) {
str = zval_try_get_string(entry);
if (UNEXPECTED(!str)) {
return;
}
ZVAL_STR(&tmp, str);
zend_hash_update(intern->parameter, string_key, &tmp);
} ZEND_HASH_FOREACH_END();
RETURN_TRUE;
@ -849,8 +852,8 @@ PHP_FUNCTION(xsl_xsltprocessor_register_php_functions)
intern = Z_XSL_P(id);
ZEND_HASH_FOREACH_VAL(Z_ARRVAL_P(array_value), entry) {
zend_string *str = zval_get_string(entry);
if (EG(exception)) {
zend_string *str = zval_try_get_string(entry);
if (UNEXPECTED(!str)) {
return;
}
ZVAL_LONG(&new_string, 1);