allocate a 512 byte buffer if none exists during Iterator.Reset() #669
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.
Reproduction code:
This would block forever in the
WhatIsNext
function because no internalitem.buf
was allocated duringIterator.Reset()
andIterator.loadMore()
will just endlessly try to fill the buffer here because the.Read()
call with a nil buffer will immediately return without reading anything.go/iter.go
Lines 265 to 279 in 71ac162
The change here is to just allocate a 512 byte buffer if there wasn't one defined before. I believe that it can be safely reused without having to clear it because we're working with the
iter.head
anditer.tail
everywhere we're making use of it.