From: Brian Durand Date: 2010-12-18T02:43:55+09:00 Subject: [ruby-core:33764] [Ruby 1.9-Bug#4168] WeakRef is unsafe to use in Ruby 1.9 --mimepart_4d0ba15a2bdb7_1fb15b1d6fe565 Content-Type: text/plain Content-Transfer-Encoding: Quoted-printable Content-Disposition: inline Issue #4168 has been updated by Brian Durand. File weakref.rb added Rdoc comments on the WeakReference class didn't get synced with the code.= Updated file attached that just fixes the comments. ---------------------------------------- http://redmine.ruby-lang.org/issues/show/4168 ---------------------------------------- http://redmine.ruby-lang.org --mimepart_4d0ba15a2bdb7_1fb15b1d6fe565 Content-Type: text/x-ruby-script; name=weakref.rb Content-Transfer-Encoding: Base64 Content-Disposition: attachment; filename=weakref.rb cmVxdWlyZSAnbW9uaXRvcicKCiMgV2Vha1JlZmVyZW5jZSBpcyBhIGNsYXNz IHRvIHJlcHJlc2VudCBhIHJlZmVyZW5jZSB0byBhbiBvYmplY3QgdGhhdCBp cyBub3Qgc2VlbiBieQojIHRoZSB0cmFjaW5nIHBoYXNlIG9mIHRoZSBnYXJi YWdlIGNvbGxlY3Rvci4gIFRoaXMgYWxsb3dzIHRoZSByZWZlcmVuY2VkCiMg b2JqZWN0IHRvIGJlIGdhcmJhZ2UgY29sbGVjdGVkIGFzIGlmIG5vdGhpbmcg aXMgcmVmZXJyaW5nIHRvIGl0LgojCiMgVGhlIGRpZmZlcmVuY2UgYmV0d2Vl biB0aGlzIGNsYXNzIGFuZCBXZWFrUmVmIGlzIHRoYXQgdGhpcyBjbGFzcyBk b2VzIG5vdAojIHVzZSB0aGUgZGVsZWdhdG9yIHBhdHRlcm4gYW5kIHNvIGhh cyBhbiBpbnRlcmZhY2UgbW9yZSBzdWl0ZWQgZm9yIGRldGVjdGluZwojIGlm IHRoZSByZWZlcmVuY2VkIG9iamVjdCBoYXMgYmVlbiByZWNsYWltZWQuCiMK IyBVc2FnZToKIwojICAgZm9vID0gT2JqZWN0Lm5ldwojICAgcmVmID0gV2Vh a1JlZmVyZW5jZS5uZXcoZm9vKQojICAgcmVmLm9iamVjdAkJCSMgc2hvdWxk IGJlIGZvbwojICAgT2JqZWN0U3BhY2UuZ2FyYmFnZV9jb2xsZWN0CiMgICBy ZWYub2JqZWN0CQkJIyBzaG91bGQgYmUgbmlsCmNsYXNzIFdlYWtSZWZlcmVu Y2UKICBhdHRyX3JlYWRlciA6cmVmZXJlbmNlZF9vYmplY3RfaWQKICAKICAj IE1hcCBvZiByZWZlcmVuY2VzIHRvIHRoZSBvYmplY3RfaWQncyB0aGV5IHJl ZmVyIHRvLgogIEBAcmVmZXJlbmNlZF9vYmplY3RfaWRzID0ge30KCiAgIyBN YXAgb2Ygb2JqZWN0X2lkcyB0byByZWZlcmVuY2VzIHRvIHRoZW0uCiAgQEBv YmplY3RfaWRfcmVmZXJlbmNlcyA9IHt9CgogIEBAbW9uaXRvciA9IE1vbml0 b3IubmV3CgogICMgRmluYWxpemVyIHRoYXQgY2xlYW5zIHVwIHdlYWsgcmVm ZXJlbmNlcyB3aGVuIGFuIG9iamVjdCBpcyBkZXN0cm95ZWQuCiAgQEBvYmpl Y3RfZmluYWxpemVyID0gbGFtYmRhIGRvIHxvYmplY3RfaWR8CiAgICBAQG1v bml0b3Iuc3luY2hyb25pemUgZG8KICAgICAgcmVmZXJlbmNlX2lkcyA9IEBA b2JqZWN0X2lkX3JlZmVyZW5jZXNbb2JqZWN0X2lkXQogICAgICBpZiByZWZl cmVuY2VfaWRzCiAgICAJICByZWZlcmVuY2VfaWRzLmVhY2ggZG8gfHJlZmVy ZW5jZV9vYmplY3RfaWR8CiAgICAJICAgIEBAcmVmZXJlbmNlZF9vYmplY3Rf aWRzLmRlbGV0ZShyZWZlcmVuY2Vfb2JqZWN0X2lkKQogICAgCSAgZW5kCiAg ICAJICBAQG9iamVjdF9pZF9yZWZlcmVuY2VzLmRlbGV0ZShvYmplY3RfaWQp CiAgCSAgZW5kCiAgICBlbmQKICBlbmQKCiAgIyBGaW5hbGl6ZXIgdGhhdCBj bGVhbnMgdXAgd2VhayByZWZlcmVuY2VzIHdoZW4gcmVmZXJlbmNlcyBhcmUg ZGVzdHJveWVkLgogIEBAcmVmZXJlbmNlX2ZpbmFsaXplciA9IGxhbWJkYSBk byB8b2JqZWN0X2lkfAogICAgQEBtb25pdG9yLnN5bmNocm9uaXplIGRvCiAg ICAgIHJlZmVyZW5jZWRfaWQgPSBAQHJlZmVyZW5jZWRfb2JqZWN0X2lkcy5k ZWxldGUob2JqZWN0X2lkKQogICAgICBpZiByZWZlcmVuY2VkX2lkCiAgICAg ICAgb2JqID0gT2JqZWN0U3BhY2UuX2lkMnJlZihyZWZlcmVuY2VkX29iamVj dF9pZCkgcmVzY3VlIG5pbAogICAgICAgIGlmIG9iagogICAgICAgICAgYmFj a3JlZmVyZW5jZXMgPSBvYmouaW5zdGFuY2VfdmFyaWFibGVfZ2V0KDpAX193 ZWFrX2JhY2tyZWZlcmVuY2VzX18pIGlmIG9iai5pbnN0YW5jZV92YXJpYWJs ZV9kZWZpbmVkPyg6QF9fd2Vha19iYWNrcmVmZXJlbmNlc19fKQogICAgICAg ICAgaWYgYmFja3JlZmVyZW5jZXMKICAgICAgICAgICAgYmFja3JlZmVyZW5j ZXMuZGVsZXRlKG9iamVjdF9pZCkKICAgICAgICAgICAgb2JqLnJlbW92ZV9p bnN0YW5jZV92YXJpYWJsZSg6QF9fd2Vha19iYWNrcmVmZXJlbmNlc19fKSBp ZiBiYWNrcmVmZXJlbmNlcy5lbXB0eT8KICAgICAgICAgIGVuZAogICAgICAg IGVuZAogICAgICAgIHJlZmVyZW5jZXMgPSBAQG9iamVjdF9pZF9yZWZlcmVu Y2VzW3JlZmVyZW5jZWRfaWRdCiAgICAgICAgaWYgcmVmZXJlbmNlcwogICAg ICAgICAgcmVmZXJlbmNlcy5kZWxldGUob2JqZWN0X2lkKQogICAgICAJICBA QG9iamVjdF9pZF9yZWZlcmVuY2VzLmRlbGV0ZShyZWZlcmVuY2VkX2lkKSBp ZiByZWZlcmVuY2VzLmVtcHR5PwogICAgCSAgZW5kCiAgCSAgZW5kCiAgICBl bmQKICBlbmQKCiAgIyBDcmVhdGUgYSBuZXcgd2VhayByZWZlcmVuY2UgdG8g YW4gb2JqZWN0LiBUaGUgZXhpc3RlbmNlIG9mIHRoZSB3ZWFrIHJlZmVyZW5j ZQogICMgd2lsbCBub3QgcHJldmVudCB0aGUgZ2FyYmFnZSBjb2xsZWN0b3Ig ZnJvbSByZWNsYWltaW5nIHRoZSByZWZlcmVuY2VkIG9iamVjdC4KICBkZWYg aW5pdGlhbGl6ZShvYmopCiAgICBAcmVmZXJlbmNlZF9vYmplY3RfaWQgPSBv YmouX19pZF9fCiAgICBPYmplY3RTcGFjZS5kZWZpbmVfZmluYWxpemVyKG9i aiwgQEBvYmplY3RfZmluYWxpemVyKQogICAgT2JqZWN0U3BhY2UuZGVmaW5l X2ZpbmFsaXplcihzZWxmLCBAQHJlZmVyZW5jZV9maW5hbGl6ZXIpCiAgICBA QG1vbml0b3Iuc3luY2hyb25pemUgZG8KICAgICAgQEByZWZlcmVuY2VkX29i amVjdF9pZHNbc2VsZi5fX2lkX19dID0gb2JqLl9faWRfXwogICAgICBhZGRf YmFja3JlZmVyZW5jZShvYmopCiAgICAgIHJlZmVyZW5jZXMgPSBAQG9iamVj dF9pZF9yZWZlcmVuY2VzW29iai5fX2lkX19dCiAgICAgIHVubGVzcyByZWZl cmVuY2VzCiAgICAgICAgcmVmZXJlbmNlcyA9IFtdCiAgICAgICAgQEBvYmpl Y3RfaWRfcmVmZXJlbmNlc1tvYmouX19pZF9fXSA9IHJlZmVyZW5jZXMKICAg ICAgZW5kCiAgICAgIHJlZmVyZW5jZXMucHVzaChzZWxmLl9faWRfXykKICAg IGVuZAogIGVuZAoKICAjIEdldCB0aGUgcmVmZXJlbmNlIG9iamVjdC4gSWYg dGhlIG9iamVjdCBoYXMgYWxyZWFkeSBiZWVuIGdhcmJhZ2UgY29sbGVjdGVk LAogICMgdGhlbiB0aGlzIG1ldGhvZCB3aWxsIHJldHVybiBuaWwuCiAgZGVm IG9iamVjdAogICAgb2JqID0gbmlsCiAgICBiZWdpbgogICAgICBpZiByZWZl cmVuY2VkX29iamVjdF9pZCA9PSBAQHJlZmVyZW5jZWRfb2JqZWN0X2lkc1tz ZWxmLm9iamVjdF9pZF0KICAgICAgICBvYmogPSBPYmplY3RTcGFjZS5faWQy cmVmKHJlZmVyZW5jZWRfb2JqZWN0X2lkKQogICAgICAgIG9iaiA9IG5pbCB1 bmxlc3MgdmVyaWZ5X2JhY2tyZWZlcmVuY2VzKG9iaikKICAgICAgZW5kCiAg ICByZXNjdWUgUmFuZ2VFcnJvcgogICAgICAjIE9iamVjdCBoYXMgYmVlbiBn YXJiYWdlIGNvbGxlY3RlZC4KICAgIGVuZAogICAgb2JqCiAgZW5kCgogIHBy aXZhdGUKCiAgICBkZWYgYWRkX2JhY2tyZWZlcmVuY2Uob2JqKQogICAgICBi YWNrcmVmZXJlbmNlcyA9IG9iai5pbnN0YW5jZV92YXJpYWJsZV9nZXQoOkBf X3dlYWtfYmFja3JlZmVyZW5jZXNfXykgaWYgb2JqLmluc3RhbmNlX3Zhcmlh YmxlX2RlZmluZWQ/KDpAX193ZWFrX2JhY2tyZWZlcmVuY2VzX18pCiAgICAg IHVubGVzcyBiYWNrcmVmZXJlbmNlcwogICAgICAgIGJhY2tyZWZlcmVuY2Vz ID0gW10KICAgICAgICBvYmouaW5zdGFuY2VfdmFyaWFibGVfc2V0KDpAX193 ZWFrX2JhY2tyZWZlcmVuY2VzX18sIGJhY2tyZWZlcmVuY2VzKQogICAgICBl bmQKICAgICAgYmFja3JlZmVyZW5jZXMgPDwgb2JqZWN0X2lkCiAgICBlbmQK CiAgICBkZWYgdmVyaWZ5X2JhY2tyZWZlcmVuY2VzKG9iaikKICAgICAgYmFj a3JlZmVyZW5jZXMgPSBvYmouaW5zdGFuY2VfdmFyaWFibGVfZ2V0KDpAX193 ZWFrX2JhY2tyZWZlcmVuY2VzX18pIGlmIG9iai5pbnN0YW5jZV92YXJpYWJs ZV9kZWZpbmVkPyg6QF9fd2Vha19iYWNrcmVmZXJlbmNlc19fKQogICAgICBi YWNrcmVmZXJlbmNlcyAmJiBiYWNrcmVmZXJlbmNlcy5pbmNsdWRlPyhvYmpl Y3RfaWQpCiAgICBlbmQKZW5kCgpyZXF1aXJlICJkZWxlZ2F0ZSIKCiMgV2Vh a1JlZiBpcyBhIGNsYXNzIHRvIHJlcHJlc2VudCBhIHJlZmVyZW5jZSB0byBh biBvYmplY3QgdGhhdCBpcyBub3Qgc2VlbiBieSB0aGUgdHJhY2luZwojIHBo YXNlIG9mIHRoZSBnYXJiYWdlIGNvbGxlY3Rvci4gVGhpcyBhbGxvd3MgdGhl IHJlZmVyZW5jZWQgb2JqZWN0IHRvIGJlIGdhcmJhZ2UgY29sbGVjdGVkCiMg YXMgaWYgbm90aGluZyBpcyByZWZlcnJpbmcgdG8gaXQuIEJlY2F1c2UgV2Vh a1JlZiBkZWxlZ2F0ZXMgbWV0aG9kIGNhbGxzIHRvIHRoZSByZWZlcmVuY2Vk CiMgb2JqZWN0LCBpdCBtYXkgYmUgdXNlZCBpbiBwbGFjZSBvZiB0aGF0IG9i amVjdCwgaS5lLiBpdCBpcyBvZiB0aGUgc2FtZSBkdWNrIHR5cGUuCiMKIyBJ ZiB5b3UgZG9uJ3QgbmVlZCB0byB1c2UgdGhlIGRlbGVnYXRvciBwYXR0ZXJu LCB5b3UgY2FuIHVzZSBXZWFrUmVmZXJlbmNlIGluc3RlYWQuCiMKIyBVc2Fn ZToKIyAgIGZvbyA9IE9iamVjdC5uZXcKIyAgIGZvbyA9IE9iamVjdC5uZXcK IyAgIHAgZm9vLnRvX3MJCQkjIG9yaWdpbmFsJ3MgY2xhc3MKIyAgIGZvbyA9 IFdlYWtSZWYubmV3KGZvbykKIyAgIHAgZm9vLnRvX3MJCQkjIHNob3VsZCBi ZSBzYW1lIGNsYXNzCiMgICBPYmplY3RTcGFjZS5nYXJiYWdlX2NvbGxlY3QK IyAgIHAgZm9vLnRvX3MJCQkjIHNob3VsZCByYWlzZSBleGNlcHRpb24gKHJl Y3ljbGVkKQpjbGFzcyBXZWFrUmVmIDwgRGVsZWdhdG9yCiAgY2xhc3MgUmVm RXJyb3IgPCBTdGFuZGFyZEVycm9yCiAgZW5kCiAgCiAgZGVmIGluaXRpYWxp emUob2JqKQogICAgc3VwZXIKICBlbmQKICAKICBkZWYgX19nZXRvYmpfXwog ICAgb2JqID0gQHJlZmVyZW5jZS5vYmplY3QKICAgIEtlcm5lbDo6cmFpc2Uo UmVmRXJyb3IsICJJbnZhbGlkIFJlZmVyZW5jZSAtIHByb2JhYmx5IHJlY3lj bGVkIiwgS2VybmVsOjpjYWxsZXIoMSkpIHVubGVzcyBvYmoKICAgIG9iagog IGVuZAogIAogIGRlZiBfX3NldG9ial9fKG9iaikKICAgIEByZWZlcmVuY2Ug PSBXZWFrUmVmZXJlbmNlLm5ldyhvYmopCiAgZW5kCiAgCiAgZGVmIHdlYWty ZWZfYWxpdmU/CiAgICAhIUByZWZlcmVuY2Uub2JqZWN0CiAgZW5kCmVuZAoK aWYgX19GSUxFX18gPT0gJDAKICBmb28gPSBPYmplY3QubmV3CiAgcCBmb28u dG9fcwkJCSMgb3JpZ2luYWwncyBjbGFzcwogIGZvbyA9IFdlYWtSZWYubmV3 KGZvbykKICBwIGZvby50b19zCQkJIyBzaG91bGQgYmUgc2FtZSBjbGFzcwog IE9iamVjdFNwYWNlLmdhcmJhZ2VfY29sbGVjdAogIE9iamVjdFNwYWNlLmdh cmJhZ2VfY29sbGVjdAogIHAgZm9vLnRvX3MJCQkjIHNob3VsZCByYWlzZSBl eGNlcHRpb24gKHJlY3ljbGVkKQplbmQK --mimepart_4d0ba15a2bdb7_1fb15b1d6fe565--