diff options
| -rw-r--r-- | ext/standard/streamsfuncs.c | 6 | ||||
| -rwxr-xr-x | main/streams/streams.c | 3 |
2 files changed, 5 insertions, 4 deletions
diff --git a/ext/standard/streamsfuncs.c b/ext/standard/streamsfuncs.c index 5b7a2bf209..91093a7653 100644 --- a/ext/standard/streamsfuncs.c +++ b/ext/standard/streamsfuncs.c @@ -1117,11 +1117,11 @@ PHP_FUNCTION(stream_filter_remove) } /* }}} */ -/* {{{ proto string stream_get_line(resource stream, int maxlen, string ending) +/* {{{ proto string stream_get_line(resource stream, int maxlen [, string ending]) Read up to maxlen bytes from a stream or until the ending string is found */ PHP_FUNCTION(stream_get_line) { - char *str; + char *str = NULL; int str_len; long max_length; zval *zstream; @@ -1129,7 +1129,7 @@ PHP_FUNCTION(stream_get_line) size_t buf_size; php_stream *stream; - if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rls", &zstream, &max_length, &str, &str_len) == FAILURE) { + if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rl|s", &zstream, &max_length, &str, &str_len) == FAILURE) { RETURN_FALSE; } diff --git a/main/streams/streams.c b/main/streams/streams.c index 6242afcf82..9a071746bc 100755 --- a/main/streams/streams.c +++ b/main/streams/streams.c @@ -846,7 +846,7 @@ PHPAPI char *php_stream_get_record(php_stream *stream, size_t maxlen, size_t *re php_stream_fill_read_buffer(stream, maxlen TSRMLS_CC); - if (delim_len == 0) { + if (delim_len == 0 || !delim) { toread = maxlen; } else { if (delim_len == 1) { @@ -870,6 +870,7 @@ PHPAPI char *php_stream_get_record(php_stream *stream, size_t maxlen, size_t *re *returned_len = php_stream_read(stream, buf, toread); if (*returned_len >= 0) { + buf[*returned_len] = '\0'; return buf; } else { efree(buf); |
