Fixed bug #30362 (stream_get_line() not handling end string correctly).

This commit is contained in:
Ilia Alshanetsky 2004-10-11 18:31:49 +00:00
parent f8a4d8a4d5
commit 5c04e39383
2 changed files with 5 additions and 4 deletions

View File

@ -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;
}

View File

@ -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);