From: Jani Taskinen Date: Sun, 31 Aug 2008 00:19:21 +0000 (+0000) Subject: [DOC]- Fixed bug #45956 (parse_ini_file() does not return false with syntax errors... X-Git-Tag: BEFORE_HEAD_NS_CHANGE~510 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=a4a02f383046599bf7986676a3544a8de93f3709;p=php [DOC]- Fixed bug #45956 (parse_ini_file() does not return false with syntax errors in parsed file) [DOC] note: change will be in since 5.2.7 --- diff --git a/ext/standard/basic_functions.c b/ext/standard/basic_functions.c index b2aa51df71..0d63a80d55 100644 --- a/ext/standard/basic_functions.c +++ b/ext/standard/basic_functions.c @@ -6491,7 +6491,11 @@ PHP_FUNCTION(parse_ini_file) fh.type = ZEND_HANDLE_FILENAME; array_init(return_value); - zend_parse_ini_file(&fh, 0, scanner_mode, ini_parser_cb, return_value TSRMLS_CC); + if (zend_parse_ini_file(&fh, 0, scanner_mode, ini_parser_cb, return_value TSRMLS_CC) == FAILURE) { + zend_hash_destroy(Z_ARRVAL_P(return_value)); + efree(Z_ARRVAL_P(return_value)); + RETURN_FALSE; + } } /* }}} */ diff --git a/ext/standard/tests/file/parse_ini_file.phpt b/ext/standard/tests/file/parse_ini_file.phpt index 053dd29347..1847329a09 100644 --- a/ext/standard/tests/file/parse_ini_file.phpt +++ b/ext/standard/tests/file/parse_ini_file.phpt @@ -9,7 +9,7 @@ Test parse_ini_file() function $file_path = dirname(__FILE__); -$parse_string = <<] diff --git a/ext/standard/tests/file/parse_ini_file_error.phpt b/ext/standard/tests/file/parse_ini_file_error.phpt index db63f2cdb6..9482df8a4d 100644 --- a/ext/standard/tests/file/parse_ini_file_error.phpt +++ b/ext/standard/tests/file/parse_ini_file_error.phpt @@ -42,12 +42,10 @@ bool(false) -- Testing parse_ini_file() function with more than expected no. of arguments -- Warning: parse_ini_file(%s): failed to open stream: No such file or directory in %s on line %d -array(0) { -} +bool(false) -- Testing parse_ini_file() function with a non-existent file -- Warning: parse_ini_file(%s): failed to open stream: No such file or directory in %s on line %d -array(0) { -} +bool(false) Done diff --git a/ext/standard/tests/general_functions/parse_ini_basic.phpt b/ext/standard/tests/general_functions/parse_ini_basic.phpt index e028014138..00acbbc9c4 100644 --- a/ext/standard/tests/general_functions/parse_ini_basic.phpt +++ b/ext/standard/tests/general_functions/parse_ini_basic.phpt @@ -45,7 +45,7 @@ array(25) { [u"dqstring"]=> unicode(46) "asdadfsdjkslkj ¡@£$$ { } !^~|¥¥{[()/)&/% ¤ # #" [u"php_constant"]=> - unicode(5) "16383" + unicode(5) "32767" [u"user_constant"]=> unicode(21) "this_is_test_constant" } @@ -76,7 +76,7 @@ array(25) { [u"dqstring"]=> unicode(34) "asdadfsdjkslkj ¡@£$$€¥¥{[()/)&/%#¤" [u"php_constant"]=> - unicode(5) "16383" + unicode(5) "32767" } [u"comments"]=> array(1) { diff --git a/ext/standard/tests/general_functions/parse_ini_file-win32.phpt b/ext/standard/tests/general_functions/parse_ini_file-win32.phpt index cd7d9f8442..7a1d63010d 100644 --- a/ext/standard/tests/general_functions/parse_ini_file-win32.phpt +++ b/ext/standard/tests/general_functions/parse_ini_file-win32.phpt @@ -116,12 +116,10 @@ Warning: parse_ini_file() expects at most 3 parameters, 4 given in %s on line 7 bool(false) Warning: parse_ini_file(%sparse_ini_file.dat): failed to open stream: No such file or directory in %s.php on line 8 -array(0) { -} +bool(false) Warning: parse_ini_file(%sparse_ini_file.dat): failed to open stream: No such file or directory in %s.php on line 9 -array(0) { -} +bool(false) array(1) { ["test"]=> string(0) "" @@ -129,17 +127,11 @@ array(1) { Warning: parse error in %s on line %d in %s on line 20 -array(1) { - ["test"]=> - string(0) "" -} +bool(false) Warning: parse error in %s on line %d in %s on line 26 -array(1) { - ["test"]=> - string(4) "test" -} +bool(false) array(1) { ["test"]=> string(8) "new diff --git a/ext/standard/tests/general_functions/parse_ini_file.phpt b/ext/standard/tests/general_functions/parse_ini_file.phpt index dcb29ce06f..c89de96618 100644 --- a/ext/standard/tests/general_functions/parse_ini_file.phpt +++ b/ext/standard/tests/general_functions/parse_ini_file.phpt @@ -116,12 +116,10 @@ Warning: parse_ini_file() expects at most 3 parameters, 4 given in %sparse_ini_f bool(false) Warning: parse_ini_file(%sparse_ini_file.dat): failed to open stream: No such file or directory in %sparse_ini_file.php on line 8 -array(0) { -} +bool(false) Warning: parse_ini_file(%sparse_ini_file.dat): failed to open stream: No such file or directory in %sparse_ini_file.php on line 9 -array(0) { -} +bool(false) array(1) { [u"test"]=> unicode(0) "" @@ -129,17 +127,11 @@ array(1) { Warning: %s error%sin %sparse_ini_file.dat on line 2 in %sparse_ini_file.php on line 20 -array(1) { - [u"test"]=> - unicode(0) "" -} +bool(false) Warning: %serror%sin %sparse_ini_file.dat on line 2 in %sparse_ini_file.php on line 26 -array(1) { - [u"test"]=> - unicode(4) "test" -} +bool(false) array(1) { [u"test"]=> unicode(8) "new