[ruby-core:96827] [Ruby master Bug#16497] StringIO#internal_encoding is broken (more severely in 2.7)

[email protected] Mon, 13 Jan 2020 17:33:39 +0000 (UTC)
Newsgroups gmane.comp.lang.ruby.core
Message-ID <redmine.journal-83825.20200113173339.e3a1e0ba2e3f8662@ruby-lang.org>
SXNzdWUgIzE2NDk3IGhhcyBiZWVuIHVwZGF0ZWQgYnkganJvY2hraW5kIChqb25hdGhhbiByb2No
a2luZCkuDQoNCg0KU3RyaW5nSU8gaGFzIGJlZW4gZG9jdW1lbnRlZCBmb3IgYSB3aGlsZSB0byAq
aWdub3JlKiBpdCdzIG93biBpbnRlcm5hbCBlbmNvZGluZywgYnV0IHJlc3BlY3QgaXQncyBvd24g
ZXh0ZXJuYWwgZW5jb2RpbmcuIA0KDQpJIGFtIG5vdCBzdXJlIHRoaXMgZXZlciBtYWRlIGFueSBz
ZW5zZS4gSXQgbWlnaHQgaGF2ZSBtYWRlIG1vcmUgc2Vuc2UgdG8gcmVzcGVjdCBhbiBpbnRlcm5h
bCBlbmNvZGluZywgYnV0IGlnbm9yZSBhbiBleHRlcm5hbCBlbmNvZGluZy4gZXh0ZXJuYWwgZW5j
b2RpbmcgaXMgbm9ybWFsbHkgdXNlZCB0byBhc3N1bWUgd2hhdCBlbmNvZGluZyBJTyBieXRlcyBh
cmUsIGZyb20gZm9yIGV4YW1wbGUgYSBmaWxlIHN5c3RlbSBvciBuZXR3b3JrLiBCdXQgc2luY2Ug
U3RyaW5nSU8gc3RhcnRzIHdpdGggYSBydWJ5IHN0cmluZyB0aGF0IGFscmVhZHkgaGFzIGEgdGFn
Z2VkIGVuY29kaW5nLCBpdCBoYXMgbm8gcmVhc29uIHRvIGhhdmUgdG8gYXNzdW1lIGEgY2hhcmFj
dGVyIGVuY29kaW5nIGluIHRoZSBmYWNlIG9mIHVua25vd24gZW5jb2Rpbmcgd2l0aCBhbiBleHRl
cm5hbF9lbmNvZGluZyB2YWx1ZS4gDQoNCkhvd2V2ZXIsIGFuIGludGVybmFsIGVuY29kaW5nICpj
b3VsZCogYmUgdXNlZnVsLiBUaGUgaW50ZXJuYWwgZW5jb2RpbmcgaXMgdXNlZCB0byB0cmFuc2Nv
ZGUgYSB2YWx1ZSB0byB0aGF0IGludGVybmFsIGVuY29kaW5nICphZnRlciogcmVhZGluZy4gDQoN
CkkgZG9uJ3QgdW5kZXJzdGFuZCB3aGF0IHdhcyBjaGFuZ2VkIGluIHJ1YnkgMi43LjAuIEkgZG9u
J3QgdW5kZXJzdGFuZCB3aHkgdGhlIHZhbHVlIG9mIGBFbmNvZGluZy5kZWZhdWx0X2ludGVybmFs
YCBlZmZlY3RzIFN0cmluZ0lPIG9wZXJhdGlvbi4gSSBiZWxpZXZlIHdoYXRldmVyIHdhcyBjaGFu
Z2VkIHdhcyBidWdneSwgYW5kIG5vdCB3aGF0IHdhcyBpbnRlbmRlZC4gDQoNCkhvd2V2ZXIsIGV2
ZW4gaWYgaXQgd2VyZSBkb25lICpyaWdodCosIGl0IGNvdWxkIHN0aWxsIGNhdXNlIGJhY2t3YXJk
cyBjb21wYXRpYmlsaXR5IHByb2JsZW1zLiBJdCdzIHBvc3NpYmxlIHNvbWVvbmUgd2FzIHRyeWlu
ZyB0byBmaXggdGhlIGZhY3QgdGhhdCAoaW4gMi42LngpLCBhIFN0cmluZ0lPIF9zYXlzXyBpdCBo
YXMgYW4gYGV4dGVybmFsX2VuY29kaW5nYCBvZiAoYnkgZGVmYXVsdCkgYEVuY29kaW5nLmRlZmF1
bHRfZXh0ZXJuYWxgICh3aGljaCBpcyBvZnRlbiBVVEY4IGJ5IGRlZmF1bHQpLCBidXQgbWF5IG5v
dCBhY3R1YWxseSBkbyB0aGF0LiAgIElmIGl0IHdlcmUgImZpeGVkIiB0byBkbyB3aGF0IDIuNy4w
IGlzIGRvaW5nIGJhc2VkIG9ubHkgb24gdmFsdWUgb2YgYEVuY29kaW5nLmRlZmF1bHRfZXh0ZXJu
YWxgLCBub3QgYGRlZmF1bHRfaW50ZXJuYWxgIC0tIHRoYXQgbWlnaHQgYmUgImNvcnJlY3QiLCBi
dXQgaXQgd291bGQgKnN0aWxsKiBiZSBhIGJhY2t3YXJkcyBpbmNvbXBhdGliaWxpdHkgcHJvYmxl
bS4gQW5kIEkgZG9uJ3QgYmVsaWV2ZSBpdCB3b3VsZCBhY3R1YWxseSBiZSBhIHVzZWZ1bCBmZWF0
dXJlIHRvIGFueW9uZSwgYXMgSSBkb24ndCB0aGluayBzdXBwb3J0aW5nIGV4dGVybmFsIGVuY29k
aW5nIG9uIFN0cmluZ0lPIGlzIHVzZWZ1bC4gDQoNCkkgYmVsaWV2ZSB0aGF0IHRoaXMgYmVoYXZp
b3Igc2hvdWxkIGJlIHJldmVydGVkIGZvciAyLjcueCwgc28gYXMgbm90IHRvIGludHJvZHVjZSBh
IGJhY2t3YXJkcyBpbmNvbXBhdCBvZiB1bmNsZWFyIHVzZWZ1bG5lc3MgaW4gMi43LnguIA0KDQpJ
IHRoaW5rIGZvciBydWJ5IDMuMC4wLCB0aGUgaW50ZW5kZWQvZGVzaXJlZCBiZWhhdmlvciBvZiBT
dHJpbmdJTyB3aXRoIHJlZ2FyZCB0byBlbmNvZGluZyBzaG91bGQgYmUgdGhvdWdodCB0aHJvdWdo
IG1vcmUgY2FyZWZ1bGx5LCB0byBtYWtlIHN1cmUgd2hhdCBpdCdzIGRvaW5nIGlzIHVzZWZ1bCwg
YmVmb3JlIGludHJvZHVjaW5nIGJhY2t3YXJkcyBicmVha2luZyBjaGFuZ2UuIA0KDQoNCg0KDQot
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQpCdWcgIzE2NDk3OiBTdHJp
bmdJTyNpbnRlcm5hbF9lbmNvZGluZyBpcyBicm9rZW4gKG1vcmUgc2V2ZXJlbHkgaW4gMi43KQ0K
aHR0cHM6Ly9idWdzLnJ1YnktbGFuZy5vcmcvaXNzdWVzLzE2NDk3I2NoYW5nZS04MzgyNQ0KDQoq
IEF1dGhvcjogenZlcm9rIChWaWN0b3IgU2hlcGVsZXYpDQoqIFN0YXR1czogQXNzaWduZWQNCiog
UHJpb3JpdHk6IE5vcm1hbA0KKiBBc3NpZ25lZTogbm9idSAoTm9idXlvc2hpIE5ha2FkYSkNCiog
VGFyZ2V0IHZlcnNpb246IA0KKiBydWJ5IC12OiANCiogQmFja3BvcnQ6IDIuNTogRE9OVE5FRUQs
IDIuNjogRE9OVE5FRUQsIDIuNzogUkVRVUlSRUQNCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0NClRvIHRoZSBiZXN0IG9mIG15IHVuZGVyc3RhbmRpbmcgZnJvbSBbRW5j
b2RpbmddKGh0dHBzOi8vZG9jcy5ydWJ5LWxhbmcub3JnL2VuL21hc3Rlci9FbmNvZGluZy5odG1s
KSBkb2NzLCB0aGUgZm9sbG93aW5nIGlzIHRydWU6DQoNCiogZXh0ZXJuYWwgZW5jb2RpbmcgKGV4
cGxpY2l0bHkgc3BlY2lmaWVkIG9yIHRha2VuIGZyb20gYEVuY29kaW5nLmRlZmF1bHRfZXh0ZXJu
YWxgKSBzcGVjaWZpZXMgaG93IHRoZSBJTyB1bmRlcnN0YW5kcyBpbnB1dCBhbmQgc3RvcmVzIGl0
IGludGVybmFsbHkNCiogaW50ZXJuYWwgZW5jb2RpbmcgKGV4cGxpY2l0bHkgc3BlY2lmaWVkIG9y
IHRha2VuIGZyb20gYEVuY29kaW5nLmRlZmF1bHRfaW50ZXJuYWxgKSBzcGVjaWZpZXMgaG93IHRo
ZSBJTyBjb252ZXJ0cyB3aGF0IGl0IHJlYWRzLg0KDQpEZW1vbnN0cmF0aW9uIHdpdGggcmVndWxh
ciBmaWxlczoNCg0KYGBgcnVieQ0KIyBwcmVwYXJlIGRhdGENCkZpbGUud3JpdGUoJ3Rlc3QudHh0
JywgJ9Cj0LrRgNCw0ZfQvdCwJy5lbmNvZGUoJ0tPSTgtVScpLCBlbmNvZGluZzogJ0tPSTgtVScp
ICM9PiA3DQoNCmRlZiB0ZXN0KGlvKQ0KICBzdHIgPSBpby5yZWFkDQogIFtpby5leHRlcm5hbF9l
bmNvZGluZywgaW8uaW50ZXJuYWxfZW5jb2RpbmcsIHN0ciwgc3RyLmVuY29kaW5nXQ0KZW5kDQoN
CiMgcmVhZCBpdDoNCnRlc3QoRmlsZS5vcGVuKCd0ZXN0LnR4dCcsICdyOktPSTgtVScpKQ0KIyA9
PiBbIzxFbmNvZGluZzpLT0k4LVU+LCBuaWwsICJceEY1XHhDQlx4RDJceEMxXHhBN1x4Q0VceEMx
IiwgIzxFbmNvZGluZzpLT0k4LVU+XQ0KDQojIFdlIGNhbiBzcGVjaWZ5IGludGVybmFsIGVuY29k
aW5nIHdoZW4gb3BlbmluZyB0aGUgZmlsZToNCnRlc3QoRmlsZS5vcGVuKCd0ZXN0LnR4dCcsICdy
OktPSTgtVTpVVEYtOCcpKQ0KIyA9PiBbIzxFbmNvZGluZzpLT0k4LVU+LCAjPEVuY29kaW5nOlVU
Ri04PiwgItCj0LrRgNCw0ZfQvdCwIiwgIzxFbmNvZGluZzpVVEYtOD5dDQoNCiMgLi4ub3Igd2hl
biBpdCBpcyBhbHJlYWR5IG9wZW5lZA0KdGVzdChGaWxlLm9wZW4oJ3Rlc3QudHh0JykudGFwIHsg
fGZ8IGYuc2V0X2VuY29kaW5nKCdLT0k4LVUnLCAnVVRGLTgnKSB9KQ0KIyA9PiBbIzxFbmNvZGlu
ZzpLT0k4LVU+LCAjPEVuY29kaW5nOlVURi04PiwgItCj0LrRgNCw0ZfQvdCwIiwgIzxFbmNvZGlu
ZzpVVEYtOD5dDQoNCiMgLi4ub3Igd2l0aCBFbmNvZGluZy5kZWZhdWx0X2ludGVybmFsDQpFbmNv
ZGluZy5kZWZhdWx0X2ludGVybmFsID0gJ1VURi04Jw0KdGVzdChGaWxlLm9wZW4oJ3Rlc3QudHh0
JywgJ3I6S09JOC1VJykpDQojID0+IFsjPEVuY29kaW5nOktPSTgtVT4sICM8RW5jb2Rpbmc6VVRG
LTg+LCAi0KPQutGA0LDRl9C90LAiLCAjPEVuY29kaW5nOlVURi04Pl0NCmBgYA0KDQpCdXQgd2l0
aCBTdHJpbmdJTywgKippbnRlcm5hbCBlbmNvZGluZyBjYW4ndCBiZSBzZXQqKiBpbiBSdWJ5ICoq
Mi42Kio6DQoNCmBgYHJ1YnkNCnJlcXVpcmUgJ3N0cmluZ2lvJw0KRW5jb2RpbmcuZGVmYXVsdF9p
bnRlcm5hbCA9IG5pbA0Kc3RyID0gJ9Cj0LrRgNCw0ZfQvdCwJy5lbmNvZGUoJ0tPSTgtVScpDQoN
CiMgU2ltcGxlc3QgZm9ybToNCnRlc3QoU3RyaW5nSU8ubmV3KHN0cikpDQojID0+IFsjPEVuY29k
aW5nOktPSTgtVT4sIG5pbCwgIlx4RjVceENCXHhEMlx4QzFceEE3XHhDRVx4QzEiLCAjPEVuY29k
aW5nOktPSTgtVT5dDQoNCiMgVHJ5IHRvIHNldCB2aWEgbW9kZQ0KdGVzdChTdHJpbmdJTy5uZXco
c3RyLCAncjpLT0k4LVU6VVRGLTgnKSkNCiMgPT4gWyM8RW5jb2Rpbmc6S09JOC1VPiwgbmlsLCAi
XHhGNVx4Q0JceEQyXHhDMVx4QTdceENFXHhDMSIsICM8RW5jb2Rpbmc6S09JOC1VPl0NCg0KIyBU
cnkgdG8gc2V0IHZpYSBzZXRfZW5jb2Rpbmc6DQp0ZXN0KFN0cmluZ0lPLm5ldyhzdHIsICdyOktP
STgtVTpVVEYtOCcpLnRhcCB7IHxmfCBmLnNldF9lbmNvZGluZygnS09JOC1VJywgJ1VURi04Jykg
fSkNCiMgPT4gWyM8RW5jb2Rpbmc6S09JOC1VPiwgbmlsLCAiXHhGNVx4Q0JceEQyXHhDMVx4QTdc
eENFXHhDMSIsICM8RW5jb2Rpbmc6S09JOC1VPl0NCg0KIyBUcnkgdG8gc2V0IHZpYSBFbm9kaW5n
LmRlZmF1bHRfaW50ZXJuYWw6DQpFbmNvZGluZy5kZWZhdWx0X2ludGVybmFsID0gJ1VURi04Jw0K
dGVzdChTdHJpbmdJTy5uZXcoc3RyKSkNCiMgPT4gWyM8RW5jb2Rpbmc6S09JOC1VPiwgbmlsLCAi
XHhGNVx4Q0JceEQyXHhDMVx4QTdceENFXHhDMSIsICM8RW5jb2Rpbmc6S09JOC1VPl0NCmBgYA0K
DQpTbywgaW4gMi42LCBhbnkgYXR0ZW1wdCB0byBkbyBzb21ldGhpbmcgd2l0aCBTdHJpbmdJTydz
IGludGVybmFsIGVuY29kaW5nIGFyZSAqKmp1c3QgaWdub3JlZCoqLg0KDQpJbiAqKjIuNyoqLCB0
aG91Z2gsIG1hdHRlcnMgYmVjYW1lIG11Y2ggd29yc2U6DQpgYGBydWJ5DQpyZXF1aXJlICdzdHJp
bmdpbycNCkVuY29kaW5nLmRlZmF1bHRfaW50ZXJuYWwgPSBuaWwNCnN0ciA9ICfQo9C60YDQsNGX
0L3QsCcuZW5jb2RlKCdLT0k4LVUnKQ0KDQojIEJlaGF2ZXMgc2FtZSBhcyAyLjYNCnRlc3QoU3Ry
aW5nSU8ubmV3KHN0cikpDQojID0+IFsjPEVuY29kaW5nOktPSTgtVT4sIG5pbCwgIlx4RjVceENC
XHhEMlx4QzFceEE3XHhDRVx4QzEiLCAjPEVuY29kaW5nOktPSTgtVT5dDQoNCiMgVHJ5IHRvIHNl
dCB2aWEgbW9kZTogV0VJUkQgYmVoYXZpb3Igc3RhcnRzDQp0ZXN0KFN0cmluZ0lPLm5ldyhzdHIs
ICdyOktPSTgtVTpVVEYtOCcpKQ0KIyA9PiBbIzxFbmNvZGluZzpVVEYtOD4sIG5pbCwgIlx4RjVc
eENCXHhEMlx4QzFceEE3XHhDRVx4QzEiLCAjPEVuY29kaW5nOlVURi04Pl0NCg0KIyBUcnkgdG8g
c2V0IHZpYSBzZXRfZW5jb2Rpbmc6IHN0aWxsIGp1c3QgaWdub3JlZA0KdGVzdChTdHJpbmdJTy5u
ZXcoc3RyLCAncjpLT0k4LVU6VVRGLTgnKS50YXAgeyB8ZnwgZi5zZXRfZW5jb2RpbmcoJ0tPSTgt
VScsICdVVEYtOCcpIH0pDQojID0+IFsjPEVuY29kaW5nOktPSTgtVT4sIG5pbCwgIlx4RjVceENC
XHhEMlx4QzFceEE3XHhDRVx4QzEiLCAjPEVuY29kaW5nOktPSTgtVT5dDQoNCiMgVHJ5IHRvIHNl
dCB2aWEgRW5vZGluZy5kZWZhdWx0X2ludGVybmFsOiBXRUlSRCBiZWhhdmlvciBhZ2Fpbg0KRW5j
b2RpbmcuZGVmYXVsdF9pbnRlcm5hbCA9ICdVVEYtOCcNCnRlc3QoU3RyaW5nSU8ubmV3KHN0cikp
DQojID0+IFsjPEVuY29kaW5nOlVURi04PiwgbmlsLCAiXHhGNVx4Q0JceEQyXHhDMVx4QTdceENF
XHhDMSIsICM8RW5jb2Rpbmc6VVRGLTg+XQ0KYGBgDQoNClNvLCAqKjIuNyoqIG5vdCBqdXN0IGln
bm9yZXMgYXR0ZW1wdHMgdG8gc2V0ICoqaW50ZXJuYWwqKiBlbmNvZGluZywgYnV0IGVycm9uZW91
c2x5IHNldHMgaXQgdG8gKipleHRlcm5hbCoqIG9uZSwgc28gc3RyaW5ncyBhcmUgbm90IHJlY29k
ZWQsIGJ1dCB0aGVpciBlbmNvZGluZyBpcyBmb3JjZWQgdG8gY2hhbmdlLg0KDQpJIGJlbGlldmUg
aXQgaXMgc2V2ZXJlIGJ1ZyAobW9yZSBzZXZlcmUgdGhhbiAyLjYncyAianVzdCBpZ25vcmluZyIp
Lg0KDQpbVGhpcyBSZWRkaXQgdGhyZWFkXShodHRwczovL3d3dy5yZWRkaXQuY29tL3IvcnVieS9j
b21tZW50cy9lbWQ2cTQvaXNfdGhpc19hX3N0cmluZ2lvX2J1Z19pbl9ydWJ5XzI3MC8pIHNob3dz
IGhvdyBpdCBicmVha3MgZXhpc3RpbmcgY29kZToNCg0KKiB0aGUgYXV0aG9yIHVzZXMgYFN0cmlu
Z0lPYCB0byB3b3JrIHdpdGggYEFTQ0lJLThCSVRgIHN0cmluZ3M7DQoqIHRoZSBjb2RlIGlzIHBl
cmZvcm1lZCBpbiBSYWlscyBlbnZpcm9ubWVudCAod2hpY2ggc2V0cyBgaW50ZXJuYWxfZW5jb2Rp
bmdgIHRvIGBVVEYtOGAgYnkgZGVmYXVsdCk7DQoqIHVuZGVyICoqMi43KiosIGBTdHJpbmdJTyNy
ZWFkYCByZXR1cm5zIGBBU0NJSS04QklUYCBjb250ZW50IGluIFN0cmluZ3Mgc2F5aW5nIHRoZWly
IGVuY29kaW5nIGlzIGBVVEYtOGAuDQoNCg0KDQoNCi0tIA0KaHR0cHM6Ly9idWdzLnJ1YnktbGFu
Zy5vcmcvDQoKVW5zdWJzY3JpYmU6IDxtYWlsdG86cnVieS1jb3JlLXJlcXVlc3RAcnVieS1sYW5n
Lm9yZz9zdWJqZWN0PXVuc3Vic2NyaWJlPgo8aHR0cDovL2xpc3RzLnJ1YnktbGFuZy5vcmcvY2dp
LWJpbi9tYWlsbWFuL29wdGlvbnMvcnVieS1jb3JlPgo=