GV

GeezerVison

The World Wide Web, restored to 800 pixels of glory.

Home|About|Gaming cabinet|Archives|How it works|Starter sites

On this site

  • Sign in
  • ActionsCI/CD and automation
  • CodespacesCloud development environments
  • All Features
  • Documentation
  • Training
  • Certifications
  • Build with Copilot
  • Customize Copilot
  • Integrations
  • Trending repos
  • GitHub Sponsors
  • Developer articles
  • Enterprises

This view

  • Original page
  • New address

GeezerVison is showing github.com — [3.15] gh-159739: Preserve CJK codec state across chunk boundaries and callbacks (GH-160400) by gpshead · Pull Request #161069 · python/cpython

Conversation

@gpshead

@gpshead gpshead commented Nov 1, 2026 •
edited by bedevere-app Bot
Loading

Uh oh!

There was an error while loading. Please reload this page.

Copy link
Copy Markdown
Member

The HZ encoder can consume a tilde after writing only its first escape byte. A split ISO-2022 escape can exceed the incremental decoder’s pending buffer, and a reset can leave the previous character set selected. Reserve space for both HZ bytes before consuming the tilde, allow the full pending escape, and restore the initial ISO-2022 state on reset. Keep the native codec table and the active encoder error policy alive so replacing their Python owners cannot leave a codec using freed memory.
(cherry picked from commit a96fbdc)

Manual backport notes (3.15): the automated backport conflicted in multibytecodec_encode() because 3.15 predates the PyBytesWriter conversion (gh-155742). The ERROR_DECREF(errors) calls are added to the existing buf.outobj return and error paths instead; nothing else differs. test_multibytecodec and the CJK codec tests pass with -R 3:3. This is needed before the gh-160185 backport (GH-161067), whose new tests rely on the ISO-2022 reset fix here.

  • Issue: Fix minor safety issues #159739

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

All reactions
@jelle-openai @gpshead
[3.15] pythongh-159739: Preserve CJK codec state across chunk boundar…
be35cbe
…ies and callbacks (pythonGH-160400)

The HZ encoder can consume a tilde after writing only its first escape byte. A split ISO-2022 escape can exceed the incremental decoder’s pending buffer, and a reset can leave the previous character set selected. Reserve space for both HZ bytes before consuming the tilde, allow the full pending escape, and restore the initial ISO-2022 state on reset. Keep the native codec table and the active encoder error policy alive so replacing their Python owners cannot leave a codec using freed memory.
(cherry picked from commit a96fbdc)

Co-authored-by: Jelle Zijlstra <[email protected]>
@gpshead
gpshead requested a review from corona10 as a code owner November 1, 2026 07:03
@bedevere-app bedevere-app Bot added the awaiting core review label Nov 1, 2026
This was referenced Nov 1, 2026
Fix minor safety issues #159739
Open
gh-159739: Preserve CJK codec state across chunk boundaries and callbacks #160400
Merged
@gpshead
gpshead enabled auto-merge (squash) November 1, 2026 07:04
@gpshead gpshead self-assigned this Nov 1, 2026
@gpshead
gpshead merged commit 06367c6 into python:3.15 Nov 1, 2026
59 checks passed

Uh oh!

There was an error while loading. Please reload this page.

@bedevere-app bedevere-app Bot removed the awaiting core review label Nov 1, 2026
@gpshead
gpshead deleted the backport-a96fbdc-3.15 branch November 1, 2026 07:35
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Reviewers

@corona10 corona10 Awaiting requested review from corona10 corona10 is a code owner

Uh oh!

There was an error while loading. Please reload this page.

Assignees

@gpshead gpshead

Labels

None yet

Projects

None yet

Milestone

No milestone

Development

Successfully merging this pull request may close these issues.

Uh oh!

There was an error while loading. Please reload this page.

2 participants

@gpshead @jelle-openai
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.
You are visitor 01402503 — GeezerVison does not store the pages you look up.
Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required.