Index: ext/spl/spl_directory.c =================================================================== RCS file: /repository/php-src/ext/spl/spl_directory.c,v retrieving revision 1.45.2.26 diff -u -p -d -r1.45.2.26 spl_directory.c --- ext/spl/spl_directory.c 29 Mar 2006 14:28:42 -0000 1.45.2.26 +++ ext/spl/spl_directory.c 6 Apr 2006 18:57:05 -0000 @@ -1327,7 +1327,7 @@ static zend_function_entry spl_Recursive static int spl_filesystem_file_read(spl_filesystem_object *intern, int silent TSRMLS_DC) /* {{{ */ { char *buf; - size_t line_len; + size_t line_len = 0; int len; long line_add = (intern->u.file.current_line || intern->u.file.current_zval) ? 1 : 0; @@ -1340,7 +1340,17 @@ static int spl_filesystem_file_read(spl_ return FAILURE; } - buf = php_stream_get_line(intern->u.file.stream, NULL, intern->u.file.max_line_len, &line_len); + if (intern->u.file.max_line_len > 0) { + buf = emalloc((intern->u.file.max_line_len + 1) * sizeof(char)); + if (php_stream_get_line(intern->u.file.stream, buf, intern->u.file.max_line_len, &line_len) == NULL) { + efree(buf); + buf = NULL; + } else { + buf[line_len] = '\0'; + } + } else { + buf = php_stream_get_line(intern->u.file.stream, NULL, 0, &line_len); + } if (!buf) { intern->u.file.current_line = estrdup("");