Fix wrong fread() length parameter type and return type #3105
+5
−2
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This PR addresses two issues with the
fread()
signature:The
length
parameter requiresint<1, max>
at engine level instead ofint<0, max>
.The return type could never be
false
until php 7.4.0 (unless bogus parameters are passed, but that does not count). Even in case of stream failure. Since php 7.4.0, it can indeed returnfalse
for example when reading from a valid stream, i.e. a failed socket.About the return type, i'm not completely sure we should fix this. For forward compatibility, in case of language level < 7.4.x, it might be good that phpstan warns about the possibility of false return value.
Thoughts?