mirror of
https://github.com/php/php-src.git
synced 2026-03-24 00:02:20 +01:00
Fix crashes in function registration + test
Internal function won't need their refcount increased as they outlive the debugger session, and userland functions won't be unloaded either. So no refcount management is necessary for registered functions.
This commit is contained in:
3
NEWS
3
NEWS
@@ -16,6 +16,9 @@ PHP NEWS
|
||||
- Intl:
|
||||
. Fixed bug GH-11874 (intl causing segfault in docker images). (nielsdos)
|
||||
|
||||
- PHPDBG:
|
||||
. Fix crashes in function registration + test. (nielsdos, Girgias)
|
||||
|
||||
- SNMP:
|
||||
. Fixed bug GH-17330 (SNMP::setSecurity segfault on closed session).
|
||||
(David Carlier)
|
||||
|
||||
@@ -89,11 +89,6 @@ static void php_phpdbg_destroy_bp_condition(zval *data) /* {{{ */
|
||||
efree(brake);
|
||||
} /* }}} */
|
||||
|
||||
static void php_phpdbg_destroy_registered(zval *data) /* {{{ */
|
||||
{
|
||||
zend_function_dtor(data);
|
||||
} /* }}} */
|
||||
|
||||
static void php_phpdbg_destroy_file_source(zval *data) /* {{{ */
|
||||
{
|
||||
phpdbg_file_source *source = (phpdbg_file_source *) Z_PTR_P(data);
|
||||
@@ -163,7 +158,7 @@ static PHP_MINIT_FUNCTION(phpdbg) /* {{{ */
|
||||
zend_hash_init(&PHPDBG_G(bp)[PHPDBG_BREAK_MAP], 8, NULL, NULL, 0);
|
||||
|
||||
zend_hash_init(&PHPDBG_G(seek), 8, NULL, NULL, 0);
|
||||
zend_hash_init(&PHPDBG_G(registered), 8, NULL, php_phpdbg_destroy_registered, 0);
|
||||
zend_hash_init(&PHPDBG_G(registered), 8, NULL, NULL, true);
|
||||
|
||||
zend_hash_init(&PHPDBG_G(file_sources), 0, NULL, php_phpdbg_destroy_file_source, 0);
|
||||
phpdbg_setup_watchpoints();
|
||||
|
||||
@@ -1424,7 +1424,6 @@ PHPDBG_COMMAND(register) /* {{{ */
|
||||
if (!zend_hash_str_exists(&PHPDBG_G(registered), lcname, lcname_len)) {
|
||||
if ((function = zend_hash_str_find_ptr(EG(function_table), lcname, lcname_len))) {
|
||||
zend_hash_str_update_ptr(&PHPDBG_G(registered), lcname, lcname_len, function);
|
||||
function_add_ref(function);
|
||||
|
||||
phpdbg_notice("Registered %s", lcname);
|
||||
} else {
|
||||
|
||||
30
sapi/phpdbg/tests/register_function.phpt
Normal file
30
sapi/phpdbg/tests/register_function.phpt
Normal file
@@ -0,0 +1,30 @@
|
||||
--TEST--
|
||||
Test registering of functions
|
||||
--PHPDBG--
|
||||
R testfunc
|
||||
testfunc 1 2 3
|
||||
R var_dump
|
||||
var_dump foo
|
||||
q
|
||||
--FILE--
|
||||
<?php
|
||||
function testfunc() {
|
||||
var_dump(func_get_args());
|
||||
}
|
||||
?>
|
||||
--EXPECTF--
|
||||
[Successful compilation of %s]
|
||||
prompt> [Registered testfunc]
|
||||
prompt> array(3) {
|
||||
[0]=>
|
||||
int(1)
|
||||
[1]=>
|
||||
int(2)
|
||||
[2]=>
|
||||
int(3)
|
||||
}
|
||||
|
||||
prompt> [Registered var_dump]
|
||||
prompt> string(3) "foo"
|
||||
|
||||
prompt>
|
||||
Reference in New Issue
Block a user