Commit 4b355b4
committed
gh-154859: Keep the iconv shift state across incremental decode calls
The iconv codecs opened a fresh conversion for every call, so decoding a
stateful encoding in chunks lost the shift state and silently produced wrong
text: incremental decoding of ISO-2022-CN dropped the escape sequences and
returned the raw bytes as ASCII.
_codecs.iconv_state() now opens a conversion that the incremental decoder and
the stream reader keep and pass back to iconv_decode(), so one conversion
spans the whole stream. reset() starts a new one.1 parent 9ccd5bb commit 4b355b4
6 files changed
Lines changed: 206 additions & 18 deletions
File tree
- Include/internal
- Lib
- encodings
- test
- Modules
- clinic
- Objects
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
185 | 185 | | |
186 | 186 | | |
187 | 187 | | |
| 188 | + | |
| 189 | + | |
| 190 | + | |
| 191 | + | |
| 192 | + | |
| 193 | + | |
188 | 194 | | |
189 | 195 | | |
190 | 196 | | |
191 | 197 | | |
192 | 198 | | |
193 | | - | |
| 199 | + | |
| 200 | + | |
194 | 201 | | |
195 | 202 | | |
196 | 203 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1 | 1 | | |
2 | 2 | | |
3 | 3 | | |
4 | | - | |
| 4 | + | |
5 | 5 | | |
6 | 6 | | |
7 | 7 | | |
| |||
14 | 14 | | |
15 | 15 | | |
16 | 16 | | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
17 | 21 | | |
18 | | - | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
19 | 27 | | |
20 | 28 | | |
21 | 29 | | |
22 | 30 | | |
23 | 31 | | |
24 | 32 | | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
25 | 37 | | |
26 | | - | |
| 38 | + | |
| 39 | + | |
| 40 | + | |
| 41 | + | |
| 42 | + | |
27 | 43 | | |
28 | 44 | | |
29 | 45 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
3676 | 3676 | | |
3677 | 3677 | | |
3678 | 3678 | | |
| 3679 | + | |
| 3680 | + | |
| 3681 | + | |
| 3682 | + | |
3679 | 3683 | | |
3680 | 3684 | | |
3681 | 3685 | | |
| |||
3804 | 3808 | | |
3805 | 3809 | | |
3806 | 3810 | | |
| 3811 | + | |
| 3812 | + | |
| 3813 | + | |
| 3814 | + | |
| 3815 | + | |
| 3816 | + | |
| 3817 | + | |
| 3818 | + | |
| 3819 | + | |
| 3820 | + | |
| 3821 | + | |
| 3822 | + | |
| 3823 | + | |
| 3824 | + | |
| 3825 | + | |
| 3826 | + | |
| 3827 | + | |
| 3828 | + | |
| 3829 | + | |
| 3830 | + | |
3807 | 3831 | | |
3808 | 3832 | | |
3809 | 3833 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
644 | 644 | | |
645 | 645 | | |
646 | 646 | | |
| 647 | + | |
| 648 | + | |
| 649 | + | |
| 650 | + | |
| 651 | + | |
| 652 | + | |
| 653 | + | |
| 654 | + | |
| 655 | + | |
| 656 | + | |
| 657 | + | |
| 658 | + | |
| 659 | + | |
| 660 | + | |
| 661 | + | |
| 662 | + | |
| 663 | + | |
| 664 | + | |
| 665 | + | |
| 666 | + | |
| 667 | + | |
| 668 | + | |
| 669 | + | |
| 670 | + | |
| 671 | + | |
| 672 | + | |
| 673 | + | |
| 674 | + | |
| 675 | + | |
| 676 | + | |
| 677 | + | |
| 678 | + | |
| 679 | + | |
| 680 | + | |
| 681 | + | |
| 682 | + | |
| 683 | + | |
| 684 | + | |
| 685 | + | |
| 686 | + | |
| 687 | + | |
| 688 | + | |
| 689 | + | |
| 690 | + | |
| 691 | + | |
| 692 | + | |
| 693 | + | |
| 694 | + | |
| 695 | + | |
| 696 | + | |
| 697 | + | |
| 698 | + | |
| 699 | + | |
| 700 | + | |
| 701 | + | |
| 702 | + | |
647 | 703 | | |
648 | 704 | | |
649 | 705 | | |
650 | 706 | | |
651 | 707 | | |
652 | 708 | | |
| 709 | + | |
653 | 710 | | |
654 | 711 | | |
655 | 712 | | |
656 | 713 | | |
657 | 714 | | |
658 | | - | |
659 | | - | |
| 715 | + | |
| 716 | + | |
| 717 | + | |
660 | 718 | | |
| 719 | + | |
| 720 | + | |
| 721 | + | |
| 722 | + | |
| 723 | + | |
| 724 | + | |
| 725 | + | |
661 | 726 | | |
662 | 727 | | |
663 | 728 | | |
664 | | - | |
| 729 | + | |
665 | 730 | | |
666 | 731 | | |
667 | 732 | | |
| |||
1155 | 1220 | | |
1156 | 1221 | | |
1157 | 1222 | | |
| 1223 | + | |
1158 | 1224 | | |
1159 | 1225 | | |
1160 | 1226 | | |
| |||
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
8239 | 8239 | | |
8240 | 8240 | | |
8241 | 8241 | | |
| 8242 | + | |
| 8243 | + | |
| 8244 | + | |
| 8245 | + | |
| 8246 | + | |
| 8247 | + | |
8242 | 8248 | | |
8243 | 8249 | | |
8244 | 8250 | | |
8245 | 8251 | | |
8246 | 8252 | | |
8247 | 8253 | | |
| 8254 | + | |
| 8255 | + | |
| 8256 | + | |
8248 | 8257 | | |
8249 | 8258 | | |
8250 | 8259 | | |
8251 | 8260 | | |
8252 | | - | |
| 8261 | + | |
| 8262 | + | |
8253 | 8263 | | |
8254 | 8264 | | |
8255 | 8265 | | |
8256 | 8266 | | |
8257 | 8267 | | |
8258 | 8268 | | |
8259 | | - | |
8260 | | - | |
8261 | | - | |
| 8269 | + | |
| 8270 | + | |
| 8271 | + | |
| 8272 | + | |
| 8273 | + | |
| 8274 | + | |
| 8275 | + | |
| 8276 | + | |
| 8277 | + | |
8262 | 8278 | | |
8263 | 8279 | | |
8264 | 8280 | | |
| |||
8337 | 8353 | | |
8338 | 8354 | | |
8339 | 8355 | | |
8340 | | - | |
| 8356 | + | |
| 8357 | + | |
| 8358 | + | |
8341 | 8359 | | |
8342 | 8360 | | |
8343 | 8361 | | |
8344 | 8362 | | |
8345 | 8363 | | |
8346 | | - | |
| 8364 | + | |
| 8365 | + | |
| 8366 | + | |
8347 | 8367 | | |
8348 | 8368 | | |
8349 | 8369 | | |
| |||
0 commit comments