Skip to content

Conversation

LoopinFool
Copy link

After grabbing the latest 0.13-release to sync up with Boost 1.67, I ran into a big issue in my debug build.
I constantly hit an assert in the checked iterators so had to track it down and fix it.
The current code casts iterators from the partial_parsed buffer (which can be quite large) to iterators for the small temporary std::array buffer. MS implemented their checked iterators using the statically-declared size of the array (which is much smaller than partial_parsed) so they hit all the time.

Also, that static_cast likely only worked because compilers likely use char* as the iterator type for both containers, but I don't think assuming that is portable.

I changed chunk_encoding_parser so that its operator() and update_chunk_size can take any compatible iterator_range type as arguments.

… Avoids an issue with Microsoft's checked iterators and is likely more correct/portable.
@deanberris
Copy link
Member

LGTM -- thanks @LoopinFool!

@deanberris deanberris merged commit ca95f04 into cpp-netlib:0.13-release Jul 19, 2018
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants