diff --git a/ext/dba/dba.c b/ext/dba/dba.c index 3d2b3b81b24a5..bccf6da63792b 100644 --- a/ext/dba/dba.c +++ b/ext/dba/dba.c @@ -108,8 +108,9 @@ static zend_string* php_dba_make_key(HashTable *key) // TODO: Use zval_try_get_string() or try_convert_to_string() instead? convert_to_string(group); convert_to_string(name); + // TODO: Check ZSTR_LEN(name) != 0 if (Z_STRLEN_P(group) == 0) { - return Z_STR_P(name); + return zend_string_copy(Z_STR_P(name)); } return zend_strpprintf(0, "[%s]%s", Z_STRVAL_P(group), Z_STRVAL_P(name)); } diff --git a/ext/dba/tests/dba_array_keys.phpt b/ext/dba/tests/dba_array_keys.phpt new file mode 100644 index 0000000000000..7f2654186e209 --- /dev/null +++ b/ext/dba/tests/dba_array_keys.phpt @@ -0,0 +1,42 @@ +--TEST-- +DBA check behaviour of array keys +--EXTENSIONS-- +dba +--SKIPIF-- + +--FILE-- + +--CLEAN-- + +--EXPECT-- +bool(true) +bool(true) +bool(true) +bool(true) +string(12) "Normal group" +string(10) "Empty name" +string(11) "Empty group" +string(10) "Empty keys"