summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ext/standard/streamsfuncs.c6
-rwxr-xr-xmain/streams/streams.c3
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);