diff options
| -rw-r--r-- | NEWS | 4 | ||||
| -rw-r--r-- | ext/dba/libinifile/inifile.c | 1 | ||||
| -rw-r--r-- | ext/dba/tests/bug70825.phpt | 71 |
3 files changed, 76 insertions, 0 deletions
@@ -14,6 +14,10 @@ PHP NEWS . Fixed bug #72922 (COM called from PHP does not return out parameters). (Anatol) +- Dba: + . Fixed bug #70825 (Cannot fetch multiple values with group in ini file). + (cmb) + - FTP: . Fixed bug #70195 (Cannot upload file using ftp_put to FTPES with require_ssl_reuse). (Benedict Singer) diff --git a/ext/dba/libinifile/inifile.c b/ext/dba/libinifile/inifile.c index f5b5ea2aa8..857251902f 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); +?> |
