mirror of
https://github.com/php/php-src.git
synced 2026-03-24 08:12:21 +01:00
Remove unreachable code after zend_error_noreturn calls (GH-20983)
This commit is contained in:
@@ -2430,8 +2430,6 @@ ZEND_API zend_result zend_startup_module_ex(zend_module_entry *module) /* {{{ */
|
||||
EG(current_module) = module;
|
||||
if (module->module_startup_func(module->type, module->module_number)==FAILURE) {
|
||||
zend_error_noreturn(E_CORE_ERROR,"Unable to start %s module", module->name);
|
||||
EG(current_module) = NULL;
|
||||
return FAILURE;
|
||||
}
|
||||
EG(current_module) = NULL;
|
||||
}
|
||||
|
||||
@@ -1480,7 +1480,6 @@ static zend_always_inline void *zend_mm_alloc_heap(zend_mm_heap *heap, size_t si
|
||||
size = ZEND_MM_ALIGNED_SIZE(size) + ZEND_MM_ALIGNED_SIZE(sizeof(zend_mm_debug_info));
|
||||
if (UNEXPECTED(size < real_size)) {
|
||||
zend_error_noreturn(E_ERROR, "Possible integer overflow in memory allocation (%zu + %zu)", ZEND_MM_ALIGNED_SIZE(real_size), ZEND_MM_ALIGNED_SIZE(sizeof(zend_mm_debug_info)));
|
||||
return NULL;
|
||||
}
|
||||
#endif
|
||||
if (EXPECTED(size <= ZEND_MM_MAX_SMALL_SIZE)) {
|
||||
|
||||
@@ -2670,7 +2670,6 @@ static void zend_emit_return_type_check(
|
||||
ZEND_ASSERT(!implicit);
|
||||
zend_error_noreturn(E_COMPILE_ERROR, "A never-returning %s must not return",
|
||||
CG(active_class_entry) != NULL ? "method" : "function");
|
||||
return;
|
||||
}
|
||||
|
||||
if (!expr && !implicit) {
|
||||
@@ -7678,14 +7677,12 @@ static zend_type zend_compile_typename_ex(
|
||||
zend_string *standard_type_str = zend_type_to_string(single_type);
|
||||
zend_error_noreturn(E_COMPILE_ERROR,
|
||||
"Type %s cannot be part of an intersection type", ZSTR_VAL(standard_type_str));
|
||||
zend_string_release_ex(standard_type_str, false);
|
||||
}
|
||||
/* An intersection of standard types cannot exist so invalidate it */
|
||||
if (ZEND_TYPE_IS_ONLY_MASK(single_type)) {
|
||||
zend_string *standard_type_str = zend_type_to_string(single_type);
|
||||
zend_error_noreturn(E_COMPILE_ERROR,
|
||||
"Type %s cannot be part of an intersection type", ZSTR_VAL(standard_type_str));
|
||||
zend_string_release_ex(standard_type_str, false);
|
||||
}
|
||||
/* Check for "self" and "parent" too */
|
||||
if (
|
||||
@@ -7918,7 +7915,6 @@ static void zend_compile_attributes(
|
||||
if (error != NULL) {
|
||||
if (delayed_target_validation == NULL) {
|
||||
zend_error_noreturn(E_COMPILE_ERROR, "%s", ZSTR_VAL(error));
|
||||
zend_string_efree(error);
|
||||
} else {
|
||||
attr->validation_error = error;
|
||||
}
|
||||
@@ -10483,7 +10479,6 @@ static bool zend_try_ct_eval_array(zval *result, zend_ast *ast) /* {{{ */
|
||||
goto fail;
|
||||
default:
|
||||
zend_error_noreturn(E_COMPILE_ERROR, "Illegal offset type");
|
||||
break;
|
||||
}
|
||||
} else if (!zend_hash_next_index_insert(Z_ARRVAL_P(result), value)) {
|
||||
fail:
|
||||
@@ -11687,7 +11682,6 @@ static void zend_compile_const_expr_class_name(zend_ast **ast_ptr) /* {{{ */
|
||||
case ZEND_FETCH_CLASS_STATIC:
|
||||
zend_error_noreturn(E_COMPILE_ERROR,
|
||||
"static::class cannot be used for compile-time class name resolution");
|
||||
return;
|
||||
EMPTY_SWITCH_DEFAULT_CASE()
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1562,7 +1562,6 @@ static void zend_set_timeout_ex(zend_long seconds, bool reset_signals) /* {{{ */
|
||||
if (!DeleteTimerQueueTimer(NULL, tq_timer, INVALID_HANDLE_VALUE)) {
|
||||
tq_timer = NULL;
|
||||
zend_error_noreturn(E_ERROR, "Could not delete queued timer");
|
||||
return;
|
||||
}
|
||||
tq_timer = NULL;
|
||||
}
|
||||
@@ -1572,7 +1571,6 @@ static void zend_set_timeout_ex(zend_long seconds, bool reset_signals) /* {{{ */
|
||||
if (!CreateTimerQueueTimer(&tq_timer, NULL, (WAITORTIMERCALLBACK)tq_timer_cb, (VOID*)eg, seconds*1000, 0, WT_EXECUTEONLYONCE)) {
|
||||
tq_timer = NULL;
|
||||
zend_error_noreturn(E_ERROR, "Could not queue new timer");
|
||||
return;
|
||||
}
|
||||
#elif defined(ZEND_MAX_EXECUTION_TIMERS)
|
||||
if (seconds > 0) {
|
||||
@@ -1659,7 +1657,6 @@ void zend_unset_timeout(void) /* {{{ */
|
||||
zend_atomic_bool_store_ex(&EG(timed_out), false);
|
||||
tq_timer = NULL;
|
||||
zend_error_noreturn(E_ERROR, "Could not delete queued timer");
|
||||
return;
|
||||
}
|
||||
tq_timer = NULL;
|
||||
}
|
||||
|
||||
@@ -2273,7 +2273,6 @@ static void zend_do_implement_interfaces(zend_class_entry *ce, zend_class_entry
|
||||
zend_get_object_type_uc(ce),
|
||||
ZSTR_VAL(ce->name),
|
||||
ZSTR_VAL(iface->name));
|
||||
return;
|
||||
}
|
||||
/* skip duplications */
|
||||
ZEND_HASH_MAP_FOREACH_STR_KEY_PTR(&iface->constants_table, key, c) {
|
||||
@@ -2524,7 +2523,6 @@ static uint32_t zend_check_trait_usage(const zend_class_entry *ce, const zend_cl
|
||||
{
|
||||
if (UNEXPECTED((trait->ce_flags & ZEND_ACC_TRAIT) != ZEND_ACC_TRAIT)) {
|
||||
zend_error_noreturn(E_COMPILE_ERROR, "Class %s is not a trait, Only traits may be used in 'as' and 'insteadof' statements", ZSTR_VAL(trait->name));
|
||||
return 0;
|
||||
}
|
||||
|
||||
for (uint32_t i = 0; i < ce->num_traits; i++) {
|
||||
@@ -2533,7 +2531,6 @@ static uint32_t zend_check_trait_usage(const zend_class_entry *ce, const zend_cl
|
||||
}
|
||||
}
|
||||
zend_error_noreturn(E_COMPILE_ERROR, "Required Trait %s wasn't added to %s", ZSTR_VAL(trait->name), ZSTR_VAL(ce->name));
|
||||
return 0;
|
||||
}
|
||||
/* }}} */
|
||||
|
||||
|
||||
2
Zend/zend_vm_execute.h
generated
2
Zend/zend_vm_execute.h
generated
@@ -53415,7 +53415,6 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_NULL_HANDLER(
|
||||
|
||||
SAVE_OPLINE();
|
||||
zend_error_noreturn(E_ERROR, "Invalid opcode %d/%d/%d.", OPLINE->opcode, OPLINE->op1_type, OPLINE->op2_type);
|
||||
ZEND_VM_NEXT_OPCODE(); /* Never reached */
|
||||
}
|
||||
|
||||
|
||||
@@ -105694,7 +105693,6 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_NULL_TAILCALL_HAND
|
||||
|
||||
SAVE_OPLINE();
|
||||
zend_error_noreturn(E_ERROR, "Invalid opcode %d/%d/%d.", OPLINE->opcode, OPLINE->op1_type, OPLINE->op2_type);
|
||||
ZEND_VM_NEXT_OPCODE(); /* Never reached */
|
||||
}
|
||||
|
||||
static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_HALT_TAILCALL_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
|
||||
|
||||
@@ -1583,7 +1583,6 @@ function gen_null_handler($f, $kind) {
|
||||
out($f,"\n");
|
||||
out($f,"\tSAVE_OPLINE();\n");
|
||||
out($f,"\tzend_error_noreturn(E_ERROR, \"Invalid opcode %d/%d/%d.\", OPLINE->opcode, OPLINE->op1_type, OPLINE->op2_type);\n");
|
||||
out($f,"\tZEND_VM_NEXT_OPCODE(); /* Never reached */\n");
|
||||
out($f,"}\n\n");
|
||||
}
|
||||
|
||||
@@ -1812,12 +1811,10 @@ function gen_executor_code($f, $spec, $kind, $prolog, &$switch_labels = array())
|
||||
case ZEND_VM_KIND_SWITCH:
|
||||
out($f,"default: ZEND_NULL_LABEL:\n");
|
||||
out($f,"\tzend_error_noreturn(E_ERROR, \"Invalid opcode %d/%d/%d.\", OPLINE->opcode, OPLINE->op1_type, OPLINE->op2_type);\n");
|
||||
out($f,"\tZEND_VM_NEXT_OPCODE(); /* Never reached */\n");
|
||||
break;
|
||||
case ZEND_VM_KIND_GOTO:
|
||||
out($f,"ZEND_NULL_LABEL:\n");
|
||||
out($f,"\tzend_error_noreturn(E_ERROR, \"Invalid opcode %d/%d/%d.\", OPLINE->opcode, OPLINE->op1_type, OPLINE->op2_type);\n");
|
||||
out($f,"\tZEND_VM_NEXT_OPCODE(); /* Never reached */\n");
|
||||
break;
|
||||
case ZEND_VM_KIND_HYBRID:
|
||||
out($f,"\t\t\tHYBRID_CASE(HYBRID_HALT):\n");
|
||||
|
||||
@@ -115,11 +115,9 @@ PDO_API zend_result php_pdo_register_driver(const pdo_driver_t *driver) /* {{{ *
|
||||
if (driver->api_version != PDO_DRIVER_API) {
|
||||
zend_error_noreturn(E_ERROR, "PDO: driver %s requires PDO API version " ZEND_ULONG_FMT "; this is PDO version %d",
|
||||
driver->driver_name, driver->api_version, PDO_DRIVER_API);
|
||||
return FAILURE;
|
||||
}
|
||||
if (!zend_hash_str_exists(&module_registry, "pdo", sizeof("pdo") - 1)) {
|
||||
zend_error_noreturn(E_ERROR, "The PDO extension must be loaded first in order to load PDO drivers");
|
||||
return FAILURE; /* NOTREACHED */
|
||||
}
|
||||
|
||||
return zend_hash_str_add_ptr(&pdo_driver_hash, driver->driver_name, driver->driver_name_len, (void*)driver) != NULL ? SUCCESS : FAILURE;
|
||||
@@ -141,7 +139,6 @@ PDO_API zend_result php_pdo_register_driver_specific_ce(const pdo_driver_t *driv
|
||||
{
|
||||
if (!zend_hash_str_exists(&module_registry, "pdo", sizeof("pdo") - 1)) {
|
||||
zend_error_noreturn(E_ERROR, "The PDO extension must be loaded first in order to load PDO drivers");
|
||||
return FAILURE; /* NOTREACHED */
|
||||
}
|
||||
|
||||
return zend_hash_str_add_ptr(&pdo_driver_specific_ce_hash, driver->driver_name,
|
||||
|
||||
@@ -3676,7 +3676,6 @@ PHP_FUNCTION(pg_unescape_bytea)
|
||||
tmp = (char *)PQunescapeBytea((unsigned char*)from, &to_len);
|
||||
if (!tmp) {
|
||||
zend_error_noreturn(E_ERROR, "Out of memory");
|
||||
return;
|
||||
}
|
||||
|
||||
RETVAL_STRINGL(tmp, to_len);
|
||||
|
||||
@@ -609,7 +609,6 @@ PHPAPI zend_result php_output_handler_conflict_register(const char *name, size_t
|
||||
|
||||
if (!EG(current_module)) {
|
||||
zend_error_noreturn(E_ERROR, "Cannot register an output handler conflict outside of MINIT");
|
||||
return FAILURE;
|
||||
}
|
||||
str = zend_string_init_interned(name, name_len, 1);
|
||||
zend_hash_update_ptr(&php_output_handler_conflicts, str, check_func);
|
||||
@@ -626,7 +625,6 @@ PHPAPI zend_result php_output_handler_reverse_conflict_register(const char *name
|
||||
|
||||
if (!EG(current_module)) {
|
||||
zend_error_noreturn(E_ERROR, "Cannot register a reverse output handler conflict outside of MINIT");
|
||||
return FAILURE;
|
||||
}
|
||||
|
||||
if (NULL != (rev_ptr = zend_hash_str_find_ptr(&php_output_handler_reverse_conflicts, name, name_len))) {
|
||||
@@ -663,7 +661,6 @@ PHPAPI zend_result php_output_handler_alias_register(const char *name, size_t na
|
||||
|
||||
if (!EG(current_module)) {
|
||||
zend_error_noreturn(E_ERROR, "Cannot register an output handler alias outside of MINIT");
|
||||
return FAILURE;
|
||||
}
|
||||
str = zend_string_init_interned(name, name_len, 1);
|
||||
zend_hash_update_ptr(&php_output_handler_aliases, str, func);
|
||||
|
||||
Reference in New Issue
Block a user