summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristoph M. Becker <cmbecker69@gmx.de>2019-09-14 18:47:53 +0200
committerChristoph M. Becker <cmbecker69@gmx.de>2019-09-14 18:48:28 +0200
commitd0247a63b66bfca355cad6005ae7fc3fe9c9e5dc (patch)
tree6945e83b69a30ff630a7a445a9330bbf5f75556c
parent3f76f9416ff82c10174dc382285b4b91789e278b (diff)
parent00ad365125df54d1776882e350c8d2b134511abd (diff)
downloadphp-git-d0247a63b66bfca355cad6005ae7fc3fe9c9e5dc.tar.gz
Merge branch 'PHP-7.3' into PHP-7.4
* PHP-7.3: Fix #78535: auto_detect_line_endings value not parsed as bool
-rw-r--r--NEWS2
-rw-r--r--ext/standard/file.c2
-rw-r--r--ext/standard/file.h2
-rw-r--r--ext/standard/tests/file/auto_detect_line_endings_1.phpt24
-rw-r--r--ext/standard/tests/file/auto_detect_line_endings_2.phpt28
5 files changed, 56 insertions, 2 deletions
diff --git a/NEWS b/NEWS
index 63ee02113e..67771d737f 100644
--- a/NEWS
+++ b/NEWS
@@ -7,6 +7,8 @@ PHP NEWS
As a side effect this allowed passign left hean list() "by reference",
instead of compile-time error. (Dmitry)
. Fixed bug #78531 (Crash when using undefined variable as object). (Dmitry)
+ . Fixed bug #78535 (auto_detect_line_endings value not parsed as bool).
+ (bugreportuser)
- FFI:
. Added missing FFI::isNull(). (Philip Hofstetter)
diff --git a/ext/standard/file.c b/ext/standard/file.c
index d0f574f224..12effbdb29 100644
--- a/ext/standard/file.c
+++ b/ext/standard/file.c
@@ -163,7 +163,7 @@ PHP_INI_BEGIN()
STD_PHP_INI_ENTRY("user_agent", NULL, PHP_INI_ALL, OnUpdateString, user_agent, php_file_globals, file_globals)
STD_PHP_INI_ENTRY("from", NULL, PHP_INI_ALL, OnUpdateString, from_address, php_file_globals, file_globals)
STD_PHP_INI_ENTRY("default_socket_timeout", "60", PHP_INI_ALL, OnUpdateLong, default_socket_timeout, php_file_globals, file_globals)
- STD_PHP_INI_ENTRY("auto_detect_line_endings", "0", PHP_INI_ALL, OnUpdateLong, auto_detect_line_endings, php_file_globals, file_globals)
+ STD_PHP_INI_ENTRY("auto_detect_line_endings", "0", PHP_INI_ALL, OnUpdateBool, auto_detect_line_endings, php_file_globals, file_globals)
PHP_INI_END()
PHP_MINIT_FUNCTION(file)
diff --git a/ext/standard/file.h b/ext/standard/file.h
index 6689dcd987..a414f722fd 100644
--- a/ext/standard/file.h
+++ b/ext/standard/file.h
@@ -117,7 +117,7 @@ php_meta_tags_token php_next_meta_token(php_meta_tags_data *);
typedef struct {
int pclose_ret;
size_t def_chunk_size;
- zend_long auto_detect_line_endings;
+ zend_bool auto_detect_line_endings;
zend_long default_socket_timeout;
char *user_agent; /* for the http wrapper */
char *from_address; /* for the ftp and http wrappers */
diff --git a/ext/standard/tests/file/auto_detect_line_endings_1.phpt b/ext/standard/tests/file/auto_detect_line_endings_1.phpt
new file mode 100644
index 0000000000..c79082ecdb
--- /dev/null
+++ b/ext/standard/tests/file/auto_detect_line_endings_1.phpt
@@ -0,0 +1,24 @@
+--TEST--
+auto_detect_line_endings --INI-- bool
+--INI--
+auto_detect_line_endings=on
+--STDIN--
+fooBar1 fooBar2 fooBar3
+--FILE--
+<?php
+
+var_dump(ini_get("auto_detect_line_endings"));
+
+var_dump(fgets(STDIN));
+var_dump(fgets(STDIN));
+var_dump(fgets(STDIN));
+
+echo "Done\n";
+?>
+--EXPECTF--
+string(1) "1"
+string(8) "fooBar1 "
+string(8) "fooBar2 "
+string(8) "fooBar3
+"
+Done
diff --git a/ext/standard/tests/file/auto_detect_line_endings_2.phpt b/ext/standard/tests/file/auto_detect_line_endings_2.phpt
new file mode 100644
index 0000000000..f33a055e08
--- /dev/null
+++ b/ext/standard/tests/file/auto_detect_line_endings_2.phpt
@@ -0,0 +1,28 @@
+--TEST--
+ini_set auto_detect_line_endings bool
+--FILE--
+<?php
+
+ini_set("auto_detect_line_endings", "on");
+var_dump(ini_get("auto_detect_line_endings"));
+
+$filePath = __DIR__ . DIRECTORY_SEPARATOR . "auto_detect_line_endings_2.txt";
+file_put_contents($filePath, "fooBar1\rfooBar2\rfooBar3");
+
+$stdin = fopen($filePath, "r");
+var_dump(fgets($stdin));
+var_dump(fgets($stdin));
+var_dump(fgets($stdin));
+
+echo "Done\n";
+?>
+--EXPECTF--
+string(2) "on"
+string(8) "fooBar1 "
+string(8) "fooBar2 "
+string(7) "fooBar3"
+Done
+--CLEAN--
+<?php
+unlink(__DIR__ . DIRECTORY_SEPARATOR . "auto_detect_line_endings_2.txt");
+?>