Uh oh!
There was an error while loading.Please reload this page.
- Notifications
You must be signed in to change notification settings - Fork33.4k
gh-141311: Avoid assertion in BytesIO readinto#141333
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 ourterms of service andprivacy statement. We’ll occasionally send you account related emails.
Already on GitHub?Sign in to your account
base:main
Are you sure you want to change the base?
Conversation
Account for when self->pos is equal to PY_SSIZE_T_MAX. The length ofread was correctly set to zero but the asserts assumedself->pos couldn't reach PY_SSIZE_T_MAX. Return early to avoid edgecases.
| } | ||
| } | ||
| assert(self->pos+len<PY_SSIZE_T_MAX); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others.Learn more.
Isn't it enough to fix this assertion?
| assert(self->pos+len<PY_SSIZE_T_MAX); | |
| assert(self->pos+len <=PY_SSIZE_T_MAX); |
| self.assertEqual(memio.read(),buf[1:]) | ||
| deftest_issue141311(self): | ||
| _testcapi=import_module("_testcapi") |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others.Learn more.
PY_SSIZE_T_MAX issys.maxsize. No_testcapi is needed.
| @@ -0,0 +1,3 @@ | |||
| Fix assertion failure in:class:`io.BytesIO` implementation of | |||
| :func:`~io.BufferedIOBase.readinto` when the current offset is at the max | |||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others.Learn more.
in :class:`io.BytesIO` implementation of :func:`~io.BufferedIOBase.readinto`
You can simply writein :meth:`io.BytesIO.readinto`.
Uh oh!
There was an error while loading.Please reload this page.
Account for when self->pos is equal to PY_SSIZE_T_MAX. The length of read was correctly set to zero but the asserts assumed self->pos couldn't reach PY_SSIZE_T_MAX. Return early to avoid edge cases.
_io_BytesIO_readinto_impl: Assertion 'self->pos + len < PY_SSIZE_T_MAX' failed.#141311