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

[email protected] Sun, 12 Jan 2020 12:36:12 +0000 (UTC)
Newsgroups gmane.comp.lang.ruby.core
Message-ID <redmine.journal-83795.20200112123611.161ba8ea417583fa@ruby-lang.org>
SXNzdWUgIzE2NDk3IGhhcyBiZWVuIHVwZGF0ZWQgYnkgenZlcm9rIChWaWN0b3IgU2hlcGVsZXYp
Lg0KDQoNCkEgYml0IG1vcmUgZGlzY3Vzc2lvbiBvbiBmaXhpbmcgdGhlIGJlaGF2aW9yLCBhZnRl
ciBkaXNjdXNzaW5nIG9uIFJlZGRpdC4gDQpCYXNpY2FsbHksIGl0IGlzIHR3byB3YXlzIHRvIGZp
eCBpdDoNCg0KMS4gSnVzdCByZXR1cm4gdG8gMi42IGJlaGF2aW9yDQoyLiBGdWxseSBpbXBsZW1l
bnQgYGludGVybmFsX2VuY29kaW5nYCBmb3IgU3RyaW5nSU8NCg0KSSBiZWxpZXZlICoqMiAobWFr
ZSBpdCB1c2UgYGludGVybmFsX2VuY29kaW5nYCkgaXMgbW9yZSB1c2VmdWwqKi4gT25lIGV4YW1w
bGUgd2hlcmUgY3VycmVudCBiZWhhdmlvciBpcyBub3QgZW5vdWdoIGlzIHN1YnN0aXR1dGluZyBg
U3RyaW5nSU9gIChmb3IgZXhhbXBsZSwgaW4gdGVzdHMpIGluIGNvZGUgd2hlcmUgYEZpbGVgIGlz
IHVzdWFsbHkgdXNlZC4gRm9yIGV4YW1wbGUsIEh1bnNwZWxsJ3Mgc3BlbGxjaGVja2VyIGRhdGEg
ZmlsZXMgdXNlIGBTRVQgPGVuY29kaW5nPmAgdGFnIGFzIHRoZWlyIGZpcnN0IGxpbmUuIFNvLCB0
aGUgY29kZSByZWFkaW5nIHRoaXMgZmlsZSwgY291bGQgbG9vayB0aGlzIHdheToNCg0KYGBgcnVi
eQ0KZGVmIHJlYWRfYWZmKGlvKQ0KICBlbmNvZGluZyA9IHJlYWRfZW5jb2RpbmcoaW8pDQogIGlv
LnNldF9lbmNvZGluZyhlbmNvZGluZywgJ1VURi04JykgIyByZWFkIGluIHdoYXRldmVyIGVuY29k
aW5nIGl0IGhhcywgcmVjb2RlIHRvIGludGVybmFsIGVuY29kaW5nIG9mIHRoZSBzb2Z0d2FyZQ0K
ICAjIG5vdywgSSBhc3N1bWUNCiAgaW8ucmVhZF9saW5lDQogICMgd2lsbCBiZSBlcXVpdmFsZW50
IHRvDQogIDxyZWFkX2J5dGVzX2Zyb21faW8+LmZvcmNlX2VuY29kaW5nKGVuY29kaW5nKS5lbmNv
ZGUoJ1VURi04JykNCiAgIyAuLi53aGljaCBpcyB0cnVlIGZvciBGaWxlIGFuZCBmYWxzZSBmb3Ig
U3RyaW5nSU8NCmVuZA0KYGBgDQoNCkhvd2V2ZXIsICoqb3B0aW9uIDEgKGp1c3QgbWFrZSBpdCBi
ZWhhdmUgbGlrZSAyLjYpKiogaXMgbW9yZSAqKmJhY2t3YXJkLWNvbXBhdGlibGUqKi4gT3RoZXJ3
aXNlIChmdWxsIGZpeCkgdGhpcyBzaW1wbGUgY29kZSB3aWxsIGNoYW5nZSBiZWhhdmlvciB1bmRl
ciBSYWlscyAod2hpY2ggc2V0IGBkZWZhdWx0X2ludGVybmFsYCB0byBgVVRGLThgKToNCg0KYGBg
cnVieQ0Kc3RyID0gJ2ZvbycuZm9yY2VfZW5jb2RpbmcoJ1dpbmRvd3MtMTI1MScpDQppbyA9IFN0
cmluZ0lPLm5ldyhzdHIpDQppby5yZWFkDQpgYGANCkluIDIuNiBpdCByZXR1cm5zIHN0cmluZyBp
biBgV2luZG93cy0xMjUxYCBlbmNvZGluZywgYW5kIHNvbWUgY29kZSBtYXkgcmVseSBvbiBpdC4g
SWYgd2UnbGwgbWFrZSBTdHJpbmdJTyByZXNwZWN0IGBkZWZhdWx0X2ludGVybmFsYCwgaXQgd2ls
bCBzdGFydCB0byByZXR1cm4gcmVjb2RlZCB0byBVVEYtOCBzdHJpbmcuDQoNClNvLCBtYXliZSB0
aGlzIHJlcG9ydCBzaG91bGQgYmUgKipzcGxpdCBpbnRvIHR3bzoqKg0KDQoxLiBBdCBsZWFzdCBm
aXggdGhlIGJ1ZyAoYnkgcmV0dXJuaW5nIHRvIHRoZSBwcmV2aW91cyBiZWhhdmlvcikgaW4gMi43
LjENCjIuIE1ha2UgYFN0cmluZ0lPYCByZXNwZWN0IGludGVybmFsX2VuY29kaW5nIGluIDIuOC8z
LjANCg0KV0RZVD8NCg0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0K
QnVnICMxNjQ5NzogU3RyaW5nSU8jaW50ZXJuYWxfZW5jb2RpbmcgaXMgYnJva2VuIChtb3JlIHNl
dmVyZWx5IGluIDIuNykNCmh0dHBzOi8vYnVncy5ydWJ5LWxhbmcub3JnL2lzc3Vlcy8xNjQ5NyNj
aGFuZ2UtODM3OTUNCg0KKiBBdXRob3I6IHp2ZXJvayAoVmljdG9yIFNoZXBlbGV2KQ0KKiBTdGF0
dXM6IEFzc2lnbmVkDQoqIFByaW9yaXR5OiBOb3JtYWwNCiogQXNzaWduZWU6IG5vYnUgKE5vYnV5
b3NoaSBOYWthZGEpDQoqIFRhcmdldCB2ZXJzaW9uOiANCiogcnVieSAtdjogDQoqIEJhY2twb3J0
OiAyLjU6IERPTlRORUVELCAyLjY6IERPTlRORUVELCAyLjc6IFJFUVVJUkVEDQotLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQpUbyB0aGUgYmVzdCBvZiBteSB1bmRlcnN0
YW5kaW5nIGZyb20gW0VuY29kaW5nXShodHRwczovL2RvY3MucnVieS1sYW5nLm9yZy9lbi9tYXN0
ZXIvRW5jb2RpbmcuaHRtbCkgZG9jcywgdGhlIGZvbGxvd2luZyBpcyB0cnVlOg0KDQoqIGV4dGVy
bmFsIGVuY29kaW5nIChleHBsaWNpdGx5IHNwZWNpZmllZCBvciB0YWtlbiBmcm9tIGBFbmNvZGlu
Zy5kZWZhdWx0X2V4dGVybmFsYCkgc3BlY2lmaWVzIGhvdyB0aGUgSU8gdW5kZXJzdGFuZHMgaW5w
dXQgYW5kIHN0b3JlcyBpdCBpbnRlcm5hbGx5DQoqIGludGVybmFsIGVuY29kaW5nIChleHBsaWNp
dGx5IHNwZWNpZmllZCBvciB0YWtlbiBmcm9tIGBFbmNvZGluZy5kZWZhdWx0X2ludGVybmFsYCkg
c3BlY2lmaWVzIGhvdyB0aGUgSU8gY29udmVydHMgd2hhdCBpdCByZWFkcy4NCg0KRGVtb25zdHJh
dGlvbiB3aXRoIHJlZ3VsYXIgZmlsZXM6DQoNCmBgYHJ1YnkNCiMgcHJlcGFyZSBkYXRhDQpGaWxl
LndyaXRlKCd0ZXN0LnR4dCcsICfQo9C60YDQsNGX0L3QsCcuZW5jb2RlKCdLT0k4LVUnKSwgZW5j
b2Rpbmc6ICdLT0k4LVUnKSAjPT4gNw0KDQpkZWYgdGVzdChpbykNCiAgc3RyID0gaW8ucmVhZA0K
ICBbaW8uZXh0ZXJuYWxfZW5jb2RpbmcsIGlvLmludGVybmFsX2VuY29kaW5nLCBzdHIsIHN0ci5l
bmNvZGluZ10NCmVuZA0KDQojIHJlYWQgaXQ6DQp0ZXN0KEZpbGUub3BlbigndGVzdC50eHQnLCAn
cjpLT0k4LVUnKSkNCiMgPT4gWyM8RW5jb2Rpbmc6S09JOC1VPiwgbmlsLCAiXHhGNVx4Q0JceEQy
XHhDMVx4QTdceENFXHhDMSIsICM8RW5jb2Rpbmc6S09JOC1VPl0NCg0KIyBXZSBjYW4gc3BlY2lm
eSBpbnRlcm5hbCBlbmNvZGluZyB3aGVuIG9wZW5pbmcgdGhlIGZpbGU6DQp0ZXN0KEZpbGUub3Bl
bigndGVzdC50eHQnLCAncjpLT0k4LVU6VVRGLTgnKSkNCiMgPT4gWyM8RW5jb2Rpbmc6S09JOC1V
PiwgIzxFbmNvZGluZzpVVEYtOD4sICLQo9C60YDQsNGX0L3QsCIsICM8RW5jb2Rpbmc6VVRGLTg+
XQ0KDQojIC4uLm9yIHdoZW4gaXQgaXMgYWxyZWFkeSBvcGVuZWQNCnRlc3QoRmlsZS5vcGVuKCd0
ZXN0LnR4dCcpLnRhcCB7IHxmfCBmLnNldF9lbmNvZGluZygnS09JOC1VJywgJ1VURi04JykgfSkN
CiMgPT4gWyM8RW5jb2Rpbmc6S09JOC1VPiwgIzxFbmNvZGluZzpVVEYtOD4sICLQo9C60YDQsNGX
0L3QsCIsICM8RW5jb2Rpbmc6VVRGLTg+XQ0KDQojIC4uLm9yIHdpdGggRW5jb2RpbmcuZGVmYXVs
dF9pbnRlcm5hbA0KRW5jb2RpbmcuZGVmYXVsdF9pbnRlcm5hbCA9ICdVVEYtOCcNCnRlc3QoRmls
ZS5vcGVuKCd0ZXN0LnR4dCcsICdyOktPSTgtVScpKQ0KIyA9PiBbIzxFbmNvZGluZzpLT0k4LVU+
LCAjPEVuY29kaW5nOlVURi04PiwgItCj0LrRgNCw0ZfQvdCwIiwgIzxFbmNvZGluZzpVVEYtOD5d
DQpgYGANCg0KQnV0IHdpdGggU3RyaW5nSU8sICoqaW50ZXJuYWwgZW5jb2RpbmcgY2FuJ3QgYmUg
c2V0KiogaW4gUnVieSAqKjIuNioqOg0KDQpgYGBydWJ5DQpyZXF1aXJlICdzdHJpbmdpbycNCkVu
Y29kaW5nLmRlZmF1bHRfaW50ZXJuYWwgPSBuaWwNCnN0ciA9ICfQo9C60YDQsNGX0L3QsCcuZW5j
b2RlKCdLT0k4LVUnKQ0KDQojIFNpbXBsZXN0IGZvcm06DQp0ZXN0KFN0cmluZ0lPLm5ldyhzdHIp
KQ0KIyA9PiBbIzxFbmNvZGluZzpLT0k4LVU+LCBuaWwsICJceEY1XHhDQlx4RDJceEMxXHhBN1x4
Q0VceEMxIiwgIzxFbmNvZGluZzpLT0k4LVU+XQ0KDQojIFRyeSB0byBzZXQgdmlhIG1vZGUNCnRl
c3QoU3RyaW5nSU8ubmV3KHN0ciwgJ3I6S09JOC1VOlVURi04JykpDQojID0+IFsjPEVuY29kaW5n
OktPSTgtVT4sIG5pbCwgIlx4RjVceENCXHhEMlx4QzFceEE3XHhDRVx4QzEiLCAjPEVuY29kaW5n
OktPSTgtVT5dDQoNCiMgVHJ5IHRvIHNldCB2aWEgc2V0X2VuY29kaW5nOg0KdGVzdChTdHJpbmdJ
Ty5uZXcoc3RyLCAncjpLT0k4LVU6VVRGLTgnKS50YXAgeyB8ZnwgZi5zZXRfZW5jb2RpbmcoJ0tP
STgtVScsICdVVEYtOCcpIH0pDQojID0+IFsjPEVuY29kaW5nOktPSTgtVT4sIG5pbCwgIlx4RjVc
eENCXHhEMlx4QzFceEE3XHhDRVx4QzEiLCAjPEVuY29kaW5nOktPSTgtVT5dDQoNCiMgVHJ5IHRv
IHNldCB2aWEgRW5vZGluZy5kZWZhdWx0X2ludGVybmFsOg0KRW5jb2RpbmcuZGVmYXVsdF9pbnRl
cm5hbCA9ICdVVEYtOCcNCnRlc3QoU3RyaW5nSU8ubmV3KHN0cikpDQojID0+IFsjPEVuY29kaW5n
OktPSTgtVT4sIG5pbCwgIlx4RjVceENCXHhEMlx4QzFceEE3XHhDRVx4QzEiLCAjPEVuY29kaW5n
OktPSTgtVT5dDQpgYGANCg0KU28sIGluIDIuNiwgYW55IGF0dGVtcHQgdG8gZG8gc29tZXRoaW5n
IHdpdGggU3RyaW5nSU8ncyBpbnRlcm5hbCBlbmNvZGluZyBhcmUgKipqdXN0IGlnbm9yZWQqKi4N
Cg0KSW4gKioyLjcqKiwgdGhvdWdoLCBtYXR0ZXJzIGJlY2FtZSBtdWNoIHdvcnNlOg0KYGBgcnVi
eQ0KcmVxdWlyZSAnc3RyaW5naW8nDQpFbmNvZGluZy5kZWZhdWx0X2ludGVybmFsID0gbmlsDQpz
dHIgPSAn0KPQutGA0LDRl9C90LAnLmVuY29kZSgnS09JOC1VJykNCg0KIyBCZWhhdmVzIHNhbWUg
YXMgMi42DQp0ZXN0KFN0cmluZ0lPLm5ldyhzdHIpKQ0KIyA9PiBbIzxFbmNvZGluZzpLT0k4LVU+
LCBuaWwsICJceEY1XHhDQlx4RDJceEMxXHhBN1x4Q0VceEMxIiwgIzxFbmNvZGluZzpLT0k4LVU+
XQ0KDQojIFRyeSB0byBzZXQgdmlhIG1vZGU6IFdFSVJEIGJlaGF2aW9yIHN0YXJ0cw0KdGVzdChT
dHJpbmdJTy5uZXcoc3RyLCAncjpLT0k4LVU6VVRGLTgnKSkNCiMgPT4gWyM8RW5jb2Rpbmc6VVRG
LTg+LCBuaWwsICJceEY1XHhDQlx4RDJceEMxXHhBN1x4Q0VceEMxIiwgIzxFbmNvZGluZzpVVEYt
OD5dDQoNCiMgVHJ5IHRvIHNldCB2aWEgc2V0X2VuY29kaW5nOiBzdGlsbCBqdXN0IGlnbm9yZWQN
CnRlc3QoU3RyaW5nSU8ubmV3KHN0ciwgJ3I6S09JOC1VOlVURi04JykudGFwIHsgfGZ8IGYuc2V0
X2VuY29kaW5nKCdLT0k4LVUnLCAnVVRGLTgnKSB9KQ0KIyA9PiBbIzxFbmNvZGluZzpLT0k4LVU+
LCBuaWwsICJceEY1XHhDQlx4RDJceEMxXHhBN1x4Q0VceEMxIiwgIzxFbmNvZGluZzpLT0k4LVU+
XQ0KDQojIFRyeSB0byBzZXQgdmlhIEVub2RpbmcuZGVmYXVsdF9pbnRlcm5hbDogV0VJUkQgYmVo
YXZpb3IgYWdhaW4NCkVuY29kaW5nLmRlZmF1bHRfaW50ZXJuYWwgPSAnVVRGLTgnDQp0ZXN0KFN0
cmluZ0lPLm5ldyhzdHIpKQ0KIyA9PiBbIzxFbmNvZGluZzpVVEYtOD4sIG5pbCwgIlx4RjVceENC
XHhEMlx4QzFceEE3XHhDRVx4QzEiLCAjPEVuY29kaW5nOlVURi04Pl0NCmBgYA0KDQpTbywgKioy
LjcqKiBub3QganVzdCBpZ25vcmVzIGF0dGVtcHRzIHRvIHNldCAqKmludGVybmFsKiogZW5jb2Rp
bmcsIGJ1dCBlcnJvbmVvdXNseSBzZXRzIGl0IHRvICoqZXh0ZXJuYWwqKiBvbmUsIHNvIHN0cmlu
Z3MgYXJlIG5vdCByZWNvZGVkLCBidXQgdGhlaXIgZW5jb2RpbmcgaXMgZm9yY2VkIHRvIGNoYW5n
ZS4NCg0KSSBiZWxpZXZlIGl0IGlzIHNldmVyZSBidWcgKG1vcmUgc2V2ZXJlIHRoYW4gMi42J3Mg
Imp1c3QgaWdub3JpbmciKS4NCg0KW1RoaXMgUmVkZGl0IHRocmVhZF0oaHR0cHM6Ly93d3cucmVk
ZGl0LmNvbS9yL3J1YnkvY29tbWVudHMvZW1kNnE0L2lzX3RoaXNfYV9zdHJpbmdpb19idWdfaW5f
cnVieV8yNzAvKSBzaG93cyBob3cgaXQgYnJlYWtzIGV4aXN0aW5nIGNvZGU6DQoNCiogdGhlIGF1
dGhvciB1c2VzIGBTdHJpbmdJT2AgdG8gd29yayB3aXRoIGBBU0NJSS04QklUYCBzdHJpbmdzOw0K
KiB0aGUgY29kZSBpcyBwZXJmb3JtZWQgaW4gUmFpbHMgZW52aXJvbm1lbnQgKHdoaWNoIHNldHMg
YGludGVybmFsX2VuY29kaW5nYCB0byBgVVRGLThgIGJ5IGRlZmF1bHQpOw0KKiB1bmRlciAqKjIu
NyoqLCBgU3RyaW5nSU8jcmVhZGAgcmV0dXJucyBgQVNDSUktOEJJVGAgY29udGVudCBpbiBTdHJp
bmdzIHNheWluZyB0aGVpciBlbmNvZGluZyBpcyBgVVRGLThgLg0KDQoNCg0KDQotLSANCmh0dHBz
Oi8vYnVncy5ydWJ5LWxhbmcub3JnLw0KClVuc3Vic2NyaWJlOiA8bWFpbHRvOnJ1YnktY29yZS1y
ZXF1ZXN0QHJ1YnktbGFuZy5vcmc/c3ViamVjdD11bnN1YnNjcmliZT4KPGh0dHA6Ly9saXN0cy5y
dWJ5LWxhbmcub3JnL2NnaS1iaW4vbWFpbG1hbi9vcHRpb25zL3J1YnktY29yZT4K