diff options
-rw-r--r-- | NEWS | 6 | ||||
-rw-r--r-- | ext/dba/libinifile/inifile.c | 1 | ||||
-rw-r--r-- | ext/dba/tests/bug70825.phpt | 71 |
3 files changed, 77 insertions, 1 deletions
@@ -9,7 +9,11 @@ PHP NEWS . Fixed bug #72922 (COM called from PHP does not return out parameters). (Anatol) --GD: +- Dba: + . Fixed bug #70825 (Cannot fetch multiple values with group in ini file). + (cmb) + +- GD: . Fixed bug #66005 (imagecopy does not support 1bit transparency on truecolor images). (cmb) . Fixed bug #72913 (imagecopy() loses single-color transparency on palette diff --git a/ext/dba/libinifile/inifile.c b/ext/dba/libinifile/inifile.c index 18a7cb97a7..25d8a6d243 100644 --- a/ext/dba/libinifile/inifile.c +++ b/ext/dba/libinifile/inifile.c @@ -250,6 +250,7 @@ val_type inifile_fetch(inifile *dba, const key_type *key, int skip) { if (skip == -1 && dba->next.key.group && dba->next.key.name && !inifile_key_cmp(&dba->next.key, key)) { /* we got position already from last fetch */ php_stream_seek(dba->fp, dba->next.pos, SEEK_SET); + ln.key.group = estrdup(dba->next.key.group); } else { /* specific instance or not same key -> restart search */ /* the slow way: restart and seacrch */ diff --git a/ext/dba/tests/bug70825.phpt b/ext/dba/tests/bug70825.phpt new file mode 100644 index 0000000000..ff05f01cf4 --- /dev/null +++ b/ext/dba/tests/bug70825.phpt @@ -0,0 +1,71 @@ +--TEST-- +Bug #70825 (Cannot fetch multiple values with group in ini file) +--SKIPIF-- +<?php +if (!extension_loaded('dba')) die('skip dba extension not available'); +if (!in_array('inifile', dba_handlers())) die('skip inifile handler not available'); +?> +--FILE-- +<?php +$filename = __DIR__ . DIRECTORY_SEPARATOR . 'bug70825.ini'; + +$db = dba_open($filename, 'n', 'inifile'); +dba_insert('foo', 23, $db); +dba_insert('foo', 42, $db); +dba_insert('foo', 1337, $db); +var_dump(dba_fetch('foo', -1, $db)); +var_dump(dba_fetch('foo', -1, $db)); +var_dump(dba_fetch('foo', -1, $db)); +dba_close($db); +unlink($filename); + +$db = dba_open($filename, 'n', 'inifile'); +dba_insert(['foo', 'bar'], 23, $db); +dba_insert(['foo', 'bar'], 42, $db); +dba_insert(['foo', 'bar'], 1337, $db); +var_dump(dba_fetch(['foo', 'bar'], -1, $db)); +var_dump(dba_fetch(['foo', 'bar'], -1, $db)); +var_dump(dba_fetch(['foo', 'bar'], -1, $db)); +dba_close($db); +unlink($filename); + +$db = dba_open($filename, 'n', 'inifile'); +dba_insert('[foo]bar', 23, $db); +dba_insert('[foo]bar', 42, $db); +dba_insert('[foo]bar', 1337, $db); +var_dump(dba_fetch('[foo]bar', -1, $db)); +var_dump(dba_fetch('[foo]bar', -1, $db)); +var_dump(dba_fetch('[foo]bar', -1, $db)); +dba_close($db); +unlink($filename); + +$db = dba_open($filename, 'n', 'inifile'); +dba_insert('[foo]bar', 23, $db); +dba_insert('[foo]bar', 42, $db); +dba_insert('[foo]bar', 1337, $db); +var_dump(dba_fetch('[foo]bar', 0, $db)); +var_dump(dba_fetch('[foo]bar', 1, $db)); +var_dump(dba_fetch('[foo]bar', 2, $db)); +dba_close($db); +unlink($filename); +?> +==DONE== +--EXPECT-- +string(2) "23" +string(2) "42" +string(4) "1337" +string(2) "23" +string(2) "42" +string(4) "1337" +string(2) "23" +string(2) "42" +string(4) "1337" +string(2) "23" +string(2) "42" +string(4) "1337" +==DONE== +--CLEAN-- +<?php +$filename = __DIR__ . DIRECTORY_SEPARATOR . 'bug70825.ini'; +unlink($filename); +?> |