diff options
| -rw-r--r-- | NEWS | 2 | ||||
| -rw-r--r-- | ext/standard/file.c | 10 | 
2 files changed, 9 insertions, 3 deletions
@@ -158,6 +158,8 @@ PHP                                                                        NEWS    (Derick, iuri dot fiedoruk at hp dot com).  - Fixed bug #44214 (Crash using preg_replace_callback() and global variable).    (Nuno, Scott) +- Fixed bug #44034 (FILE_IGNORE_NEW_LINES in file() does not work as expected +  when lines end in \r\n). (Ilia)  - Fixed bug #43960 (strtotime() returns timestamp in the future when given a    bogus string). (Derick)  - Fixed bug #43832 (mysqli_get_charset() doesn't expose charset comment). diff --git a/ext/standard/file.c b/ext/standard/file.c index 38d2a1e34f..5a782d6da6 100644 --- a/ext/standard/file.c +++ b/ext/standard/file.c @@ -775,16 +775,20 @@ parse_eol:  			} while ((p = memchr(p, eol_marker, (e-p))));  		} else {  			do { -				if (skip_blank_lines && !(p-s)) { +				int windows_eol = 0; +				if (eol_marker == '\n' && *(p - 1) == '\r') { +					windows_eol++; +				} +				if (skip_blank_lines && !(p-s-windows_eol)) {  					s = ++p;  					continue;  				}  				if (PG(magic_quotes_runtime)) {  					/* s is in target_buf which is freed at the end of the function */ -					slashed = php_addslashes(s, (p-s), &len, 0 TSRMLS_CC); +					slashed = php_addslashes(s, (p-s-windows_eol), &len, 0 TSRMLS_CC);  					add_index_stringl(return_value, i++, slashed, len, 0);  				} else { -					add_index_stringl(return_value, i++, estrndup(s, p-s), p-s, 0); +					add_index_stringl(return_value, i++, estrndup(s, p-s-windows_eol), p-s-windows_eol, 0);  				}  				s = ++p;  			} while ((p = memchr(p, eol_marker, (e-p))));  | 
