Skip to content

Fix issue with Microsoft's checked iterators #852

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged

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