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

[email protected] Sat, 11 Jan 2020 03:16:25 +0000 (UTC)
Newsgroups gmane.comp.lang.ruby.core
Message-ID <redmine.journal-83769.20200111031624.38c66df10ce19bcf@ruby-lang.org>
SXNzdWUgIzE2NDk3IGhhcyBiZWVuIHVwZGF0ZWQgYnkganJvY2hraW5kIChqb25hdGhhbiByb2No
a2luZCkuDQoNCg0KTm90ZSB0aGUgU3RyaW5nSU8gaXMgX25vdF8gdHJhbnNjb2RpbmcuIGl0IGlz
IHNpbXBseSBjaGFuZ2luZyB0aGUgZW5jb2RpbmcgInRhZ2dpbmciIG9mIHRoZSBTdHJpbmcgd2l0
aG91dCBjaGFuZ2luZyBhbnkgYnl0ZXMuIA0KDQpJZiB0aGUgc3RyaW5nIHdhcyBBU0NJSS04QklU
IChpZSBCSU5BUlkpLCB0aGVyZSBpcyByZWFsbHkgKm5vIHdheSogdG8gdHJhbnNjb2RlLiBCdXQg
aGVyZSdzIGFuIGV4YW1wbGUgd2hlcmUgaXQgKmNvdWxkKiBoYXZlIHRyYW5zY29kZWQsIGJ1dCBk
aWQgbm90IC0tIGl0IG9ubHkgY2hhbmdlZCB0aGUgYGVuY29kaW5nYCB0YWcsIG1ha2luZyB0aGUg
cmVzdWx0IGludmFsaWQuIA0KDQogICAgc3RyID0gIsOpIi5lbmNvZGUoIldJTkRPV1MtMTI1MiIp
DQogICAgIz0+ICJceEU5IiAjIHRoYXQgaXMgYW4gw6kgaW4gV0lORE9XUy0xMjUyLCBubyBwcm9i
bGVtDQogICAgc2lvID0gU3RyaW5nSU8ubmV3KHN0cikgDQogICAgcmVhZF9zdHJpbmcgPSBzaW8u
cmVhZA0KICAgIHJlYWRfc3RyaW5nLmVuY29kaW5nICMgPT4gIzxFbmNvZGluZzpVVEYtOD4NCiAg
ICByZWFkX3N0cmluZy52YWxpZF9lbmNvZGluZz8gIyA9PiBmYWxzZQ0KICAgIHJlYWRfc3RyaW5n
ICMgPT4gIlx4RTkiDQoNClRoZSBjdXJyZW50IGJlaGF2aW9yIGNhbid0IHBvc3NpYmx5IGJlIGNv
cnJlY3QuIA0KDQpCdXQgSSBiZWxpZXZlIHRoYXQgdGhlIHJ1YnkgMi42LnggYmVoYXZpb3Igd2Fz
IGFjdHVhbGx5IGNvcnJlY3QvZGVzaXJhYmxlL21vc3QgdXNlZnVsLCBhbmQgc2hvdWxkIGJlIHJl
dHVybmVkLiBJZiBhIFN0cmluZ0lPIG11c3Qgc3VwcG9ydCBzb21lIGtpbmQgb2YgdHJhbnNjb2Rp
bmcgYmVoYXZpb3IsIGl0IHNob3VsZCBub3QgYmUgaXQncyAqZGVmYXVsdCogYmVoYXZpb3IsIGJ5
IGRlZmF1bHQgaXQgc2hvdWxkIGRvIHdoYXQgaXQgZGlkIGluIDIuNi4wIC0tIGllLCBkZWZhdWx0
IHRvIHRoZSBlbmNvZGluZyBhbHJlYWR5IHNldCBvbiB0aGUgc3RyaW5nIHBhc3NlZCBpbiBhcyBh
cmd1bWVudCB0byBTdHJpbmdJTyBpbml0aWFsaXplci4gDQoNCi0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0NCkJ1ZyAjMTY0OTc6IFN0cmluZ0lPI2ludGVybmFsX2VuY29k
aW5nIGlzIGJyb2tlbiAobW9yZSBzZXZlcmVseSBpbiAyLjcpDQpodHRwczovL2J1Z3MucnVieS1s
YW5nLm9yZy9pc3N1ZXMvMTY0OTcjY2hhbmdlLTgzNzY5DQoNCiogQXV0aG9yOiB6dmVyb2sgKFZp
Y3RvciBTaGVwZWxldikNCiogU3RhdHVzOiBBc3NpZ25lZA0KKiBQcmlvcml0eTogTm9ybWFsDQoq
IEFzc2lnbmVlOiBub2J1IChOb2J1eW9zaGkgTmFrYWRhKQ0KKiBUYXJnZXQgdmVyc2lvbjogDQoq
IHJ1YnkgLXY6IA0KKiBCYWNrcG9ydDogMi41OiBET05UTkVFRCwgMi42OiBET05UTkVFRCwgMi43
OiBSRVFVSVJFRA0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KVG8g
dGhlIGJlc3Qgb2YgbXkgdW5kZXJzdGFuZGluZyBmcm9tIFtFbmNvZGluZ10oaHR0cHM6Ly9kb2Nz
LnJ1YnktbGFuZy5vcmcvZW4vbWFzdGVyL0VuY29kaW5nLmh0bWwpIGRvY3MsIHRoZSBmb2xsb3dp
bmcgaXMgdHJ1ZToNCg0KKiBleHRlcm5hbCBlbmNvZGluZyAoZXhwbGljaXRseSBzcGVjaWZpZWQg
b3IgdGFrZW4gZnJvbSBgRW5jb2RpbmcuZGVmYXVsdF9leHRlcm5hbGApIHNwZWNpZmllcyBob3cg
dGhlIElPIHVuZGVyc3RhbmRzIGlucHV0IGFuZCBzdG9yZXMgaXQgaW50ZXJuYWxseQ0KKiBpbnRl
cm5hbCBlbmNvZGluZyAoZXhwbGljaXRseSBzcGVjaWZpZWQgb3IgdGFrZW4gZnJvbSBgRW5jb2Rp
bmcuZGVmYXVsdF9pbnRlcm5hbGApIHNwZWNpZmllcyBob3cgdGhlIElPIGNvbnZlcnRzIHdoYXQg
aXQgcmVhZHMuDQoNCkRlbW9uc3RyYXRpb24gd2l0aCByZWd1bGFyIGZpbGVzOg0KDQpgYGBydWJ5
DQojIHByZXBhcmUgZGF0YQ0KRmlsZS53cml0ZSgndGVzdC50eHQnLCAn0KPQutGA0LDRl9C90LAn
LmVuY29kZSgnS09JOC1VJyksIGVuY29kaW5nOiAnS09JOC1VJykgIz0+IDcNCg0KZGVmIHRlc3Qo
aW8pDQogIHN0ciA9IGlvLnJlYWQNCiAgW2lvLmV4dGVybmFsX2VuY29kaW5nLCBpby5pbnRlcm5h
bF9lbmNvZGluZywgc3RyLCBzdHIuZW5jb2RpbmddDQplbmQNCg0KIyByZWFkIGl0Og0KdGVzdChG
aWxlLm9wZW4oJ3Rlc3QudHh0JywgJ3I6S09JOC1VJykpDQojID0+IFsjPEVuY29kaW5nOktPSTgt
VT4sIG5pbCwgIlx4RjVceENCXHhEMlx4QzFceEE3XHhDRVx4QzEiLCAjPEVuY29kaW5nOktPSTgt
VT5dDQoNCiMgV2UgY2FuIHNwZWNpZnkgaW50ZXJuYWwgZW5jb2Rpbmcgd2hlbiBvcGVuaW5nIHRo
ZSBmaWxlOg0KdGVzdChGaWxlLm9wZW4oJ3Rlc3QudHh0JywgJ3I6S09JOC1VOlVURi04JykpDQoj
ID0+IFsjPEVuY29kaW5nOktPSTgtVT4sICM8RW5jb2Rpbmc6VVRGLTg+LCAi0KPQutGA0LDRl9C9
0LAiLCAjPEVuY29kaW5nOlVURi04Pl0NCg0KIyAuLi5vciB3aGVuIGl0IGlzIGFscmVhZHkgb3Bl
bmVkDQp0ZXN0KEZpbGUub3BlbigndGVzdC50eHQnKS50YXAgeyB8ZnwgZi5zZXRfZW5jb2Rpbmco
J0tPSTgtVScsICdVVEYtOCcpIH0pDQojID0+IFsjPEVuY29kaW5nOktPSTgtVT4sICM8RW5jb2Rp
bmc6VVRGLTg+LCAi0KPQutGA0LDRl9C90LAiLCAjPEVuY29kaW5nOlVURi04Pl0NCg0KIyAuLi5v
ciB3aXRoIEVuY29kaW5nLmRlZmF1bHRfaW50ZXJuYWwNCkVuY29kaW5nLmRlZmF1bHRfaW50ZXJu
YWwgPSAnVVRGLTgnDQp0ZXN0KEZpbGUub3BlbigndGVzdC50eHQnLCAncjpLT0k4LVUnKSkNCiMg
PT4gWyM8RW5jb2Rpbmc6S09JOC1VPiwgIzxFbmNvZGluZzpVVEYtOD4sICLQo9C60YDQsNGX0L3Q
sCIsICM8RW5jb2Rpbmc6VVRGLTg+XQ0KYGBgDQoNCkJ1dCB3aXRoIFN0cmluZ0lPLCAqKmludGVy
bmFsIGVuY29kaW5nIGNhbid0IGJlIHNldCoqIGluIFJ1YnkgKioyLjYqKjoNCg0KYGBgcnVieQ0K
cmVxdWlyZSAnc3RyaW5naW8nDQpFbmNvZGluZy5kZWZhdWx0X2ludGVybmFsID0gbmlsDQpzdHIg
PSAn0KPQutGA0LDRl9C90LAnLmVuY29kZSgnS09JOC1VJykNCg0KIyBTaW1wbGVzdCBmb3JtOg0K
dGVzdChTdHJpbmdJTy5uZXcoc3RyKSkNCiMgPT4gWyM8RW5jb2Rpbmc6S09JOC1VPiwgbmlsLCAi
XHhGNVx4Q0JceEQyXHhDMVx4QTdceENFXHhDMSIsICM8RW5jb2Rpbmc6S09JOC1VPl0NCg0KIyBU
cnkgdG8gc2V0IHZpYSBtb2RlDQp0ZXN0KFN0cmluZ0lPLm5ldyhzdHIsICdyOktPSTgtVTpVVEYt
OCcpKQ0KIyA9PiBbIzxFbmNvZGluZzpLT0k4LVU+LCBuaWwsICJceEY1XHhDQlx4RDJceEMxXHhB
N1x4Q0VceEMxIiwgIzxFbmNvZGluZzpLT0k4LVU+XQ0KDQojIFRyeSB0byBzZXQgdmlhIHNldF9l
bmNvZGluZzoNCnRlc3QoU3RyaW5nSU8ubmV3KHN0ciwgJ3I6S09JOC1VOlVURi04JykudGFwIHsg
fGZ8IGYuc2V0X2VuY29kaW5nKCdLT0k4LVUnLCAnVVRGLTgnKSB9KQ0KIyA9PiBbIzxFbmNvZGlu
ZzpLT0k4LVU+LCBuaWwsICJceEY1XHhDQlx4RDJceEMxXHhBN1x4Q0VceEMxIiwgIzxFbmNvZGlu
ZzpLT0k4LVU+XQ0KDQojIFRyeSB0byBzZXQgdmlhIEVub2RpbmcuZGVmYXVsdF9pbnRlcm5hbDoN
CkVuY29kaW5nLmRlZmF1bHRfaW50ZXJuYWwgPSAnVVRGLTgnDQp0ZXN0KFN0cmluZ0lPLm5ldyhz
dHIpKQ0KIyA9PiBbIzxFbmNvZGluZzpLT0k4LVU+LCBuaWwsICJceEY1XHhDQlx4RDJceEMxXHhB
N1x4Q0VceEMxIiwgIzxFbmNvZGluZzpLT0k4LVU+XQ0KYGBgDQoNClNvLCBpbiAyLjYsIGFueSBh
dHRlbXB0IHRvIGRvIHNvbWV0aGluZyB3aXRoIFN0cmluZ0lPJ3MgaW50ZXJuYWwgZW5jb2Rpbmcg
YXJlICoqanVzdCBpZ25vcmVkKiouDQoNCkluICoqMi43KiosIHRob3VnaCwgbWF0dGVycyBiZWNh
bWUgbXVjaCB3b3JzZToNCmBgYHJ1YnkNCnJlcXVpcmUgJ3N0cmluZ2lvJw0KRW5jb2RpbmcuZGVm
YXVsdF9pbnRlcm5hbCA9IG5pbA0Kc3RyID0gJ9Cj0LrRgNCw0ZfQvdCwJy5lbmNvZGUoJ0tPSTgt
VScpDQoNCiMgQmVoYXZlcyBzYW1lIGFzIDIuNg0KdGVzdChTdHJpbmdJTy5uZXcoc3RyKSkNCiMg
PT4gWyM8RW5jb2Rpbmc6S09JOC1VPiwgbmlsLCAiXHhGNVx4Q0JceEQyXHhDMVx4QTdceENFXHhD
MSIsICM8RW5jb2Rpbmc6S09JOC1VPl0NCg0KIyBUcnkgdG8gc2V0IHZpYSBtb2RlOiBXRUlSRCBi
ZWhhdmlvciBzdGFydHMNCnRlc3QoU3RyaW5nSU8ubmV3KHN0ciwgJ3I6S09JOC1VOlVURi04Jykp
DQojID0+IFsjPEVuY29kaW5nOlVURi04PiwgbmlsLCAiXHhGNVx4Q0JceEQyXHhDMVx4QTdceENF
XHhDMSIsICM8RW5jb2Rpbmc6VVRGLTg+XQ0KDQojIFRyeSB0byBzZXQgdmlhIHNldF9lbmNvZGlu
Zzogc3RpbGwganVzdCBpZ25vcmVkDQp0ZXN0KFN0cmluZ0lPLm5ldyhzdHIsICdyOktPSTgtVTpV
VEYtOCcpLnRhcCB7IHxmfCBmLnNldF9lbmNvZGluZygnS09JOC1VJywgJ1VURi04JykgfSkNCiMg
PT4gWyM8RW5jb2Rpbmc6S09JOC1VPiwgbmlsLCAiXHhGNVx4Q0JceEQyXHhDMVx4QTdceENFXHhD
MSIsICM8RW5jb2Rpbmc6S09JOC1VPl0NCg0KIyBUcnkgdG8gc2V0IHZpYSBFbm9kaW5nLmRlZmF1
bHRfaW50ZXJuYWw6IFdFSVJEIGJlaGF2aW9yIGFnYWluDQpFbmNvZGluZy5kZWZhdWx0X2ludGVy
bmFsID0gJ1VURi04Jw0KdGVzdChTdHJpbmdJTy5uZXcoc3RyKSkNCiMgPT4gWyM8RW5jb2Rpbmc6
VVRGLTg+LCBuaWwsICJceEY1XHhDQlx4RDJceEMxXHhBN1x4Q0VceEMxIiwgIzxFbmNvZGluZzpV
VEYtOD5dDQpgYGANCg0KU28sICoqMi43Kiogbm90IGp1c3QgaWdub3JlcyBhdHRlbXB0cyB0byBz
ZXQgKippbnRlcm5hbCoqIGVuY29kaW5nLCBidXQgZXJyb25lb3VzbHkgc2V0cyBpdCB0byAqKmV4
dGVybmFsKiogb25lLCBzbyBzdHJpbmdzIGFyZSBub3QgcmVjb2RlZCwgYnV0IHRoZWlyIGVuY29k
aW5nIGlzIGZvcmNlZCB0byBjaGFuZ2UuDQoNCkkgYmVsaWV2ZSBpdCBpcyBzZXZlcmUgYnVnICht
b3JlIHNldmVyZSB0aGFuIDIuNidzICJqdXN0IGlnbm9yaW5nIikuDQoNCltUaGlzIFJlZGRpdCB0
aHJlYWRdKGh0dHBzOi8vd3d3LnJlZGRpdC5jb20vci9ydWJ5L2NvbW1lbnRzL2VtZDZxNC9pc190
aGlzX2Ffc3RyaW5naW9fYnVnX2luX3J1YnlfMjcwLykgc2hvd3MgaG93IGl0IGJyZWFrcyBleGlz
dGluZyBjb2RlOg0KDQoqIHRoZSBhdXRob3IgdXNlcyBgU3RyaW5nSU9gIHRvIHdvcmsgd2l0aCBg
QVNDSUktOEJJVGAgc3RyaW5nczsNCiogdGhlIGNvZGUgaXMgcGVyZm9ybWVkIGluIFJhaWxzIGVu
dmlyb25tZW50ICh3aGljaCBzZXRzIGBpbnRlcm5hbF9lbmNvZGluZ2AgdG8gYFVURi04YCBieSBk
ZWZhdWx0KTsNCiogdW5kZXIgKioyLjcqKiwgYFN0cmluZ0lPI3JlYWRgIHJldHVybnMgYEFTQ0lJ
LThCSVRgIGNvbnRlbnQgaW4gU3RyaW5ncyBzYXlpbmcgdGhlaXIgZW5jb2RpbmcgaXMgYFVURi04
YC4NCg0KDQoNCg0KLS0gDQpodHRwczovL2J1Z3MucnVieS1sYW5nLm9yZy8NCgpVbnN1YnNjcmli
ZTogPG1haWx0bzpydWJ5LWNvcmUtcmVxdWVzdEBydWJ5LWxhbmcub3JnP3N1YmplY3Q9dW5zdWJz
Y3JpYmU+CjxodHRwOi8vbGlzdHMucnVieS1sYW5nLm9yZy9jZ2ktYmluL21haWxtYW4vb3B0aW9u
cy9ydWJ5LWNvcmU+Cg==