diff options
| author | Christoph M. Becker <cmbecker69@gmx.de> | 2016-08-25 18:48:05 +0200 |
|---|---|---|
| committer | Christoph M. Becker <cmbecker69@gmx.de> | 2016-08-25 18:48:05 +0200 |
| commit | f2ed2985069eb1db7c8ae0f6925fe484893c2629 (patch) | |
| tree | e221d3fb5af6f513f646282410979f07002ace93 | |
| parent | 8adddabbebf0f7c11a3521398ad3d2837d25631c (diff) | |
| parent | 3f53814ca7ffa71471b38beb1640a06c1a98c34a (diff) | |
| download | php-git-f2ed2985069eb1db7c8ae0f6925fe484893c2629.tar.gz | |
Merge branch 'PHP-7.1'
| -rw-r--r-- | ext/dba/libinifile/inifile.c | 1 | ||||
| -rw-r--r-- | ext/dba/tests/bug70825.phpt | 71 |
2 files changed, 72 insertions, 0 deletions
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); +?> |
