diff --git a/ext/standard/file.c b/ext/standard/file.c index d23a3a7d26c..99ae1969041 100644 --- a/ext/standard/file.c +++ b/ext/standard/file.c @@ -990,6 +990,10 @@ PHP_FUNCTION(fgets) } else { return_value->value.str.val = buf; return_value->value.str.len = strlen(return_value->value.str.val); + /* resize buffer if it's much larger than the result */ + if(return_value->value.str.len < len/2) { + return_value->value.str.val = erealloc(buf,return_value->value.str.len); + } } return_value->type = IS_STRING; }