summaryrefslogtreecommitdiff
path: root/main
diff options
context:
space:
mode:
authorMarkus Fischer <mfischer@php.net>2002-06-11 21:22:12 +0000
committerMarkus Fischer <mfischer@php.net>2002-06-11 21:22:12 +0000
commit17b3ef47f3903fa2dfb0bda9302fcbfb8a012f25 (patch)
treef047a15c1b6c3a9f24c216f4a22dc56bc8b0baec /main
parent137a29008680ee73e324c263cb7c31bc0322a05f (diff)
downloadphp-git-17b3ef47f3903fa2dfb0bda9302fcbfb8a012f25.tar.gz
- Fix builtin gets() emulation (hopefully).
Diffstat (limited to 'main')
-rwxr-xr-xmain/streams.c14
1 files changed, 3 insertions, 11 deletions
diff --git a/main/streams.c b/main/streams.c
index fa1a9f8f15..ea1844871f 100755
--- a/main/streams.c
+++ b/main/streams.c
@@ -250,21 +250,13 @@ PHPAPI char *_php_stream_gets(php_stream *stream, char *buf, size_t maxlen TSRML
return NULL;
} else {
/* unbuffered fgets - poor performance ! */
- size_t n = 1;
char *c = buf;
/* TODO: look at error returns? */
- while(n < maxlen && stream->ops->read(stream, c, 1 TSRMLS_CC) > 0) {
- n++;
- if (*c == '\n') {
- c++;
- break;
- }
- c++;
- }
- *c = 0;
- return buf;
+ while (--maxlen > 0 && stream->ops->read(stream, buf, 1 TSRMLS_CC) == 1 && *buf++ != '\n');
+ *buf = '\0';
+ return c == buf && maxlen > 0 ? NULL : c;
}
}