[#118346] [Ruby master Bug#20586] Some filesystem calls in dir.c are missing error handling and can return incorrect results if interrupted — "ivoanjo (Ivo Anjo) via ruby-core" <ruby-core@...>
Issue #20586 has been reported by ivoanjo (Ivo Anjo).
13 messages
2024/06/19
[ruby-core:118390] [Ruby master Feature#20594] A new String method to append bytes while preserving encoding
From:
"maximecb (Maxime Chevalier-Boisvert) via ruby-core" <ruby-core@...>
Date:
2024-06-26 15:51:00 UTC
List:
ruby-core #118390
SXNzdWUgIzIwNTk0IGhhcyBiZWVuIHVwZGF0ZWQgYnkgbWF4aW1lY2IgKE1heGltZSBDaGV2YWxp ZXItQm9pc3ZlcnQpLg0KDQoNCj4gSSBjb25zdWx0ZWQgQG1heGltZWNiIChNYXhpbWUgQ2hldmFs aWVyLUJvaXN2ZXJ0KSBhYm91dCB0aGlzIHByb3Bvc2FsLCBhbmQgYWNjb3JkaW5nIHRvIGhlciwg YWNjZXB0aW5nIHZhcmlhYmxlIGFyZ3VtZW50cyBtYWtlcyBpdCBoYXJkZXIgZm9yIFlKSVQgdG8g b3B0aW1pemUuDQoNClllYWggbXkgcGVyc29uYWwgcHJlZmVyZW5jZSB3b3VsZCBiZSBmb3Igc29t ZXRoaW5nIGxpa2UgYGJ5dGVwdXNoYCBvciBgYnl0ZWFwcGVuZGAgdGhhdCBhY2NlcHRzIGEgc2lu Z2xlIGFyZ3VtZW50LCB0aGUgc2ltcGxlc3QgcG9zc2libGUgbWV0aG9kLCB0aGF0IGlzIGtlcHQg YXMgc3RyaWN0IGFzIHBvc3NpYmxlLCB3aGlsZSBzdGlsbCBnZXR0aW5nIHRoZSBqb2IgZG9uZS4N Cg0KVGhlIHRlY2huaWNhbCByZWFzb24gYmVpbmcgdGhhdCBpbiBvcmRlciB0byBoYW5kbGUgbXVs dGlwbGUgYXJndW1lbnRzLCB3ZSBoYXZlIHRvIGVzc2VudGlhbGx5IHVucm9sbCB0aGUgbG9vcCBp biB0aGUgWUpJVCBjb2RlZ2VuLCBhbmQgc3BlY3VsYXRlIHRoYXQgdGhlIGFyZ3VtZW50cyB3aWxs IGFsbCBrZWVwIHRoZSBzYW1lIHR5cGUgYXQgcnVuLXRpbWUuIFRoaXMgaXMgbGlrZWx5IHRvIGJl IHRydWUsIGJ1dCBpdCBtZWFucyB0aGF0IHdlIGhhdmUgdG8gc3BlY3VsYXRlIG9uIG1hbnkgdGhp bmdzIGF0IG9uY2UgYW5kIHRoZW4gZ2VuZXJhdGUgYSBiaWcgcGllY2Ugb2YgbWFjaGluZSBjb2Rl IGFsbCBhdCB0aGUgc2FtZSB0aW1lLg0KDQpJIHVuZGVyc3RhbmQgdGhhdCB0aGVyZSBpcyBzb21l IHRlbXB0YXRpb24gdG8ga2VlcCB0aGUgQVBJIG1vcmUgc2ltaWxhciB0byBvdGhlciBTdHJpbmcg bWV0aG9kcyB3aXRoIGEgc2ltaWxhciBwdXJwb3NlLCBidXQgSU1PIHRoaXMgbWV0aG9kIGlzIGFs cmVhZHkgdW51c3VhbCBiZWNhdXNlIGl0J3MgZXNzZW50aWFsbHkgYW4gYHVuc2FmZWAgb3BlcmF0 aW9uIChubyBlbmNvZGluZyB2YWxpZGF0aW9uKS4gVGhlIHJlYXNvbiB3ZSdyZSBkaXNjdXNzaW5n IHRoaXMgbWV0aG9kIGluIHRoZSBmaXJzdCBwbGFjZSBpcyBwZXJmb3JtYW5jZSwgYW5kIHNvIG1h eWJlIHBlcmZvcm1hbmNlL3NpbXBsaWNpdHkgc2hvdWxkIGJlIHRoZSBtYWluIGNvbmNlcm4uDQoN CklmIHRoZSBvbmx5IHdheSB0aGlzIGNoYW5nZSB3aWxsIGJlIGFsbG93ZWQgdG8gaGFwcGVuIGlz IHRvIGFsbG93IGEgdmFyaWFibGUgYXJndW1lbnQgY291bnQsIHRoZW4gT0sgSSBndWVzcywgYnV0 IEkgd291bGQgbGlrZSB0byBwdXNoIGZvciBzb21ldGhpbmcgbW9yZSBzaW1wbGUsIGxlc3MgZHlu YW1pYy4gV2Ugc29ydCBvZiBoYXZlIHRoZSBiZW5lZml0IG9mIGhpbmRzaWdodCBoZXJlLCBidXQg dGFrZSB0aGUgUnVieSBiaW5kaW5nIEFQSSBmb3IgZXhhbXBsZS4gSWYgd2Ugd2VyZSBkZXNpZ25p bmcgUnVieSB0b2RheSwgdGhlcmUgaXMgbm8gd2F5IHdlIHdvdWxkIGNob29zZSB0byBtYWtlIGJp bmRpbmcgYXMgcG93ZXJmdWwgYW5kIHVucmVzdHJpY3RlZCBhcyBpdCBpcy4gSXQncyBtdWNoIGVh c2llciB0byByZW1vdmUgcmVzdHJpY3Rpb25zIGxhdGVyIHRoYW4gdG8gYWRkIHRoZW0gYmFjayBp bi4NCg0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KRmVhdHVyZSAj MjA1OTQ6IEEgbmV3IFN0cmluZyBtZXRob2QgdG8gYXBwZW5kIGJ5dGVzIHdoaWxlIHByZXNlcnZp bmcgZW5jb2RpbmcNCmh0dHBzOi8vYnVncy5ydWJ5LWxhbmcub3JnL2lzc3Vlcy8yMDU5NCNjaGFu Z2UtMTA4OTA2DQoNCiogQXV0aG9yOiBieXJvb3QgKEplYW4gQm91c3NpZXIpDQoqIFN0YXR1czog T3Blbg0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyMjIENvbnRl eHQNCg0KV2hlbiB3b3JraW5nIHdpdGggYmluYXJ5IHByb3RvY29scyBzdWNoIGFzIGBwcm90b2J1 ZmAgb3IgYE1lc3NhZ2VQYWNrYCwgeW91IG1heSBvZnRlbiBuZWVkIHRvIGFzc2VtYmxlIG11bHRp cGxlDQpzdHJpbmdzIG9mIGRpZmZlcmVudCBlbmNvZGluZzoNCg0KYGBgcnVieQ0KUG9zdCA9IFN0 cnVjdC5uZXcoOnRpdGxlLCA6Ym9keSkgZG8NCiAgZGVmIHNlcmlhbGl6ZShidWYpDQogICAgYnVm IDw8DQogICAgICAyNTUgPDwgdGl0bGUuYnl0ZXNpemUgPDwgdGl0bGUgPDwNCiAgICAgIDI1NSA8 PCBib2R5LmJ5dGVzaXplIDw8IGJvZHkNCiAgZW5kDQplbmQNCg0KUG9zdC5uZXcoIkhlbGxvIiwg IldvcmxkIikuc2VyaWFsaXplKCJzb21lZGF0YSIuYikgIyA9PiAic29tZWRhdGFceEZGXHgwNUhl bGxvXHhGRlx4MDVXb3JsZCIgIzxFbmNvZGluZzpBU0NJSS04QklUPg0KYGBgDQoNClRoZSBwcm9i bGVtIGluIHRoZSBhYm92ZSBjYXNlLCBpcyB0aGF0IGJlY2F1c2UgYEVuY29kaW5nOjpBU0NJSV84 QklUYCBpcyBkZWNsYXJlZCBhcyBBU0NJSSBjb21wYXRpYmxlLA0KaWYgb25lIG9mIHRoZSBhcHBl bmRlZCBzdHJpbmcgY29udGFpbnMgYnl0ZXMgb3V0c2lkZSB0aGUgQVNDSUkgcmFuZ2UsIHN0cmlu ZyBpcyBhdXRvbWF0aWNhbGx5IHByb21vdGVkDQp0byBhbm90aGVyIGVuY29kaW5nLCB3aGljaCB0 aGVuIGxlYWRzIHRvIGVuY29kaW5nIGlzc3VlczoNCg0KYGBgcnVieQ0KUG9zdC5uZXcoIkjigqxs bG8iLCAiV8O0cmxkIikuc2VyaWFsaXplKCJzb21lZGF0YSIuYikgIyA9PiBpbmNvbXBhdGlibGUg Y2hhcmFjdGVyIGVuY29kaW5nczogQVNDSUktOEJJVCBhbmQgVVRGLTggKEVuY29kaW5nOjpDb21w YXRpYmlsaXR5RXJyb3IpDQpgYGANCg0KSW4gbWFueSBjYXNlcywgeW91IHdhbnQgdG8gYXBwZW5k IHRvIGEgU3RyaW5nIHdpdGhvdXQgY2hhbmdpbmcgdGhlIHJlY2VpdmVyJ3MgZW5jb2RpbmcuDQoN ClRoZSBpc3N1ZSBpc24ndCBleGNsdXNpdmUgdG8gYmluYXJ5IHByb3RvY29scyBhbmQgZm9ybWF0 cywgaXQgYWxzbyBoYXBwZW4gd2l0aCBBU0NJSSBwcm90b2NvbHMgdGhhdCBhY2NlcHQgYXJiaXRy YXJ5IGJ5dGVzIGlubGluZSwNCmxpa2UgUmVkaXMncyBSRVNQIHByb3RvY29sIG9yIGV2ZW4gSFRU UC8xLjEuDQoNCiMjIyBQcmV2aW91cyBkaXNjdXNzaW9uDQoNClRoZXJlIHdhcyBhIHNpbWlsYXIg ZmVhdHVyZSByZXF1ZXN0IGEgd2hpbGUgYWdvLCBidXQgaXQgd2FzIGFiYW5kb25lZDogaHR0cHM6 Ly9idWdzLnJ1YnktbGFuZy5vcmcvaXNzdWVzLzE0OTc1DQoNCiMjIyBFeGlzdGluZyBzb2x1dGlv bnMNCg0KWW91IGNhbiBvZiBjb3Vyc2UgYWx3YXlzIGNhc3QgdGhlIHN0cmluZ3MgeW91IGFwcGVu ZCB0byBhdm9pZCB0aGlzIHByb2JsZW06DQoNCmBgYHJ1YnkNClBvc3QgPSBTdHJ1Y3QubmV3KDp0 aXRsZSwgOmJvZHkpIGRvDQogIGRlZiBzZXJpYWxpemUoYnVmKQ0KICAgIGJ1ZiA8PA0KICAgICAg MjU1IDw8IHRpdGxlLmJ5dGVzaXplIDw8IHRpdGxlLmIgPDwNCiAgICAgIDI1NSA8PCBib2R5LmJ5 dGVzaXplIDw8IGJvZHkuYg0KICBlbmQNCmVuZA0KYGBgDQoNCkJ1dCB0aGlzIGNhdXNlIGEgbG90 IG9mIG5lZWRsZXNzIGFsbG9jYXRpb25zLg0KDQpZb3UnZCB0aGluayB5b3UgY291bGQgYWxzbyB1 c2UgYGJ5dGVzcGxpY2VgLCBidXQgaXQgYWN0dWFsbHkgaGFzIHRoZSBzYW1lIGlzc3VlOg0KDQpg YGBydWJ5DQpQb3N0ID0gU3RydWN0Lm5ldyg6dGl0bGUsIDpib2R5KSBkbw0KICBkZWYgc2VyaWFs aXplKGJ1ZikNCiAgICBidWYgPDwgMjU1IDw8IHRpdGxlLmJ5dGVzaXplDQogICAgYnVmLmJ5dGVz cGxpY2UoYnVmLmJ5dGVzaXplLCB0aXRsZS5ieXRlc2l6ZSwgdGl0bGUpDQogICAgYnVmIDw8IDI1 NSA8PCBib2R5LmJ5dGVzaXplDQogICAgYnVmLmJ5dGVzcGxpY2UoYnVmLmJ5dGVzaXplLCBib2R5 LmJ5dGVzaXplLCB0aXRsZSkNCiAgZW5kDQplbmQNClBvc3QubmV3KCJI4oKsbGxvIiwgIlfDtHJs ZCIpLnNlcmlhbGl6ZSgic29tZWRhdGEiLmIpICMgPT4gJ1N0cmluZyNieXRlc3BsaWNlJzogaW5j b21wYXRpYmxlIGNoYXJhY3RlciBlbmNvZGluZ3M6IEJJTkFSWSAoQVNDSUktOEJJVCkgYW5kIFVU Ri04IChFbmNvZGluZzo6Q29tcGF0aWJpbGl0eUVycm9yKQ0KYGBgDQoNCkFuZCBldmVuIGlmIGl0 IHdvcmtlZCwgaXQgd291bGQgYmUgdmVyeSB1bmVyZ29ub21pYy4NCg0KIyMjIFByb3Bvc2FsOiBh IGBieXRlY29uY2F0YCBtZXRob2QNCg0KQSBzb2x1dGlvbiB0byB0aGlzIHdvdWxkIGJlIHRvIGFk ZCBhIG5ldyBgYnl0ZWNvbmNhdGAgbWV0aG9kLCB0aGF0IGNvdWxkIGJlIHNoaW1lZCBhczoNCg0K YGBgcnVieQ0KY2xhc3MgU3RyaW5nDQogIGRlZiBieXRlY29uY2F0KCpzdHJpbmdzKQ0KICAgIHN0 cmluZ3MubWFwISBkbyB8c3wNCiAgICAgIGlmIHMuaXNfYT8oU3RyaW5nKSAmJiBzLmVuY29kaW5n ICE9IGVuY29kaW5nDQogICAgICAgIHMuZHVwLmZvcmNlX2VuY29kaW5nKGVuY29kaW5nKQ0KICAg ICAgZWxzZQ0KICAgICAgICBzDQogICAgICBlbmQNCiAgICBlbmQNCiAgICBjb25jYXQoKnN0cmlu Z3MpDQogIGVuZA0KZW5kDQoNClBvc3QgPSBTdHJ1Y3QubmV3KDp0aXRsZSwgOmJvZHkpIGRvDQog IGRlZiBzZXJpYWxpemUoYnVmKQ0KICAgIGJ1Zi5ieXRlY29uY2F0KA0KICAgICAgMjU1LCB0aXRs ZS5ieXRlc2l6ZSwgdGl0bGUsDQogICAgICAyNTUsIGJvZHkuYnl0ZXNpemUsIGJvZHksDQogICAg KQ0KICBlbmQNCmVuZA0KDQpQb3N0Lm5ldygiSOKCrGxsbyIsICJXw7RybGQiKS5zZXJpYWxpemUo InNvbWVkYXRhIi5iKSAjID0+ICJzb21lZGF0YVx4RkZcYUhceEUyXHg4Mlx4QUNsbG9ceEZGXHgw NldceEMzXHhCNHJsZCIgIzxFbmNvZGluZzpBU0NJSS04QklUPg0KYGBgDQoNCkJ1dCBvZiBjb3Vy c2UgYSBidWlsdGluIGltcGxlbWVudGF0aW9uIHdvdWxkbid0IG5lZWQgdG8gZHVwIHRoZSBhcmd1 bWVudHMuDQoNCkxpa2Ugb3RoZXIgYGJ5dGUqYCBtZXRob2RzLCBpdCdzIHRoZSByZXNwb25zaWJp bGl0eSBvZiB0aGUgY2FsbGVyIHRvIGVuc3VyZSB0aGUgcmVzdWx0aW5nIHN0cmluZyBoYXMgYSB2 YWxpZCBlbmNvZGluZywgb3INCnRvIGRlYWwgd2l0aCBpdCBpZiBub3QuDQoNCiMjIyBNZXRob2Qg bmFtZSBhbmQgc2lnbmF0dXJlDQoNCiMjIyMgTmFtZQ0KDQpUaGlzIHByb3Bvc2FsIHN1Z2dlc3Rz IGBTdHJpbmcjYnl0ZWNvbmNhdGAsIHRvIG1pcnJvciBgU3RyaW5nI2NvbmNhdGAsIGJ1dCBvdGhl ciBuYW1lcyBhcmUgcG9zc2libGU6DQoNCiAgLSBgYnl0ZWFwcGVuZGAgKGxpa2UgYEFycmF5I2Fw cGVuZGApDQogIC0gYGJ5dGVwdXNoYCAgKGxpa2UgYEFycmF5I3B1c2hgKQ0KDQojIyMjIFNpZ25h dHVyZQ0KDQpUaGlzIHByb3Bvc2FsIG1ha2VzIGBieXRlY29uY2F0YCBhY2NlcHQgZWl0aGVyIGBT dHJpbmdgIG9yIGBJbnRlZ2VyYCAoaW4gY2hhciByYW5nZSkgYXJndW1lbnRzIGxpa2UgYGNvbmNh dGAuIEkgYmVsaWV2ZSBpdCBtYWtlcyBzZW5zZSBmb3IgY29uc2lzdGVuY3kgYW5kIGFsc28gYmVj YXVzZSBpdCdzIG5vdCB1bmNvbW1vbiBmb3IgcHJvdG9jb2xzIHRvIGhhdmUgc29tZSBieXRlIGJh c2VkIHNlZ21lbnRzLCBhbmQgSW50ZWdlcnMgYXJlIG1vcmUgY29udmVuaWVudCB0aGVyZS4NCg0K VGhlIHByb3Bvc2VkIG1ldGhvZCBhbHNvIGFjY2VwdCB2YXJpYWJsZSBhcmd1bWVudHMgZm9yIGNv bnNpc3RlbmN5IHdpdGggYFN0cmluZyNjb25jYXRgLCBgQXJyYXkjcHVzaGAsIGBBcnJheSNhcHBl bmRgLg0KDQpUaGUgcHJvcG9zZWQgbWV0aG9kIHJldHVybnMgc2VsZiwgbGlrZSBgY29uY2F0YCBh bmQgb3RoZXJzLg0KDQojIyMgWUpJVCBjb25zaWRlcmF0aW9uDQoNCkkgY29uc3VsdGVkIEBtYXhp bWVjYiBhYm91dCB0aGlzIHByb3Bvc2FsLCBhbmQgYWNjb3JkaW5nIHRvIGhlciwgYWNjZXB0aW5n IHZhcmlhYmxlIGFyZ3VtZW50cyBtYWtlcyBpdCBoYXJkZXIgZm9yIFlKSVQgdG8gb3B0aW1pemUu DQpJIHN1c3BlY3QgY29uc2lzdGVuY3kgd2l0aCBvdGhlciBBUElzIHRydW1wcyB0aGUgcGVyZm9y bWFuY2UgY29uc2lkZXJhdGlvbiwgYnV0IEkgdGhpbmsgaXQncyB3b3J0aCBtZW50aW9uaW5nLg0K DQoNCg0KDQoNCi0tIA0KaHR0cHM6Ly9idWdzLnJ1YnktbGFuZy5vcmcvDQogX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwogcnVieS1jb3JlIG1haWxpbmcgbGlz dCAtLSBydWJ5LWNvcmVAbWwucnVieS1sYW5nLm9yZwogVG8gdW5zdWJzY3JpYmUgc2VuZCBhbiBl bWFpbCB0byBydWJ5LWNvcmUtbGVhdmVAbWwucnVieS1sYW5nLm9yZwogcnVieS1jb3JlIGluZm8g LS0gaHR0cHM6Ly9tbC5ydWJ5LWxhbmcub3JnL21haWxtYW4zL2xpc3RzL3J1YnktY29yZS5tbC5y dWJ5LWxhbmcub3JnLw==