Bug #3783: Replace Calls to rb_error_frozen() with rb_check_frozen()
http://redmine.ruby-lang.org/issues/show/3783

Author: Run Paint Run Run
Status: Open, Priority: Low
Category: core
ruby -v: ruby 1.9.3dev (2010-09-02 trunk 29167) [i686-linux] =


This patch replaces lines of the form:
  if (OBJ_FROZEN(obj)) rb_error_frozen("object");
with:
  rb_check_frozen(obj);
This is simpler, and produces error messages that are more consistent and=
 precise.

(It feels wrong cluttering the bug tracker with things like this. Would t=
hey be better posted to the list or sent as a "pull" request?)


----------------------------------------
http://redmine.ruby-lang.org
ZGlmZiAtLWdpdCBhL2FycmF5LmMgYi9hcnJheS5jCmluZGV4IDRlMDU4NWMu
LjUzMzQ4ZWYgMTAwNjQ0Ci0tLSBhL2FycmF5LmMKKysrIGIvYXJyYXkuYwpA
QCAtMjQyLDcgKzI0Miw3IEBAIHJiX2FyeV9zZXRfc2hhcmVkKFZBTFVFIGFy
eSwgVkFMVUUgc2hhcmVkKQogc3RhdGljIGlubGluZSB2b2lkCiByYl9hcnlf
bW9kaWZ5X2NoZWNrKFZBTFVFIGFyeSkKIHsKLSAgICBpZiAoT0JKX0ZST1pF
TihhcnkpKSByYl9lcnJvcl9mcm96ZW4oImFycmF5Iik7CisgICAgcmJfY2hl
Y2tfZnJvemVuKGFyeSk7CiAgICAgaWYgKCFPQkpfVU5UUlVTVEVEKGFyeSkg
JiYgcmJfc2FmZV9sZXZlbCgpID49IDQpCiAJcmJfcmFpc2UocmJfZVNlY3Vy
aXR5RXJyb3IsICJJbnNlY3VyZTogY2FuJ3QgbW9kaWZ5IGFycmF5Iik7CiB9
CmRpZmYgLS1naXQgYS9nYy5jIGIvZ2MuYwppbmRleCA5YmRlNDg3Li5mYjAy
ZmU3IDEwMDY0NAotLS0gYS9nYy5jCisrKyBiL2djLmMKQEAgLTI2NzQsNyAr
MjY3NCw3IEBAIHN0YXRpYyBWQUxVRQogdW5kZWZpbmVfZmluYWwoVkFMVUUg
b3MsIFZBTFVFIG9iaikKIHsKICAgICByYl9vYmpzcGFjZV90ICpvYmpzcGFj
ZSA9ICZyYl9vYmpzcGFjZTsKLSAgICBpZiAoT0JKX0ZST1pFTihvYmopKSBy
Yl9lcnJvcl9mcm96ZW4oIm9iamVjdCIpOworICAgIHJiX2NoZWNrX2Zyb3pl
bihvYmopOwogICAgIGlmIChmaW5hbGl6ZXJfdGFibGUpIHsKIAlzdF9kZWxl
dGUoZmluYWxpemVyX3RhYmxlLCAoc3RfZGF0YV90Kikmb2JqLCAwKTsKICAg
ICB9CkBAIC0yNjk4LDcgKzI2OTgsNyBAQCBkZWZpbmVfZmluYWwoaW50IGFy
Z2MsIFZBTFVFICphcmd2LCBWQUxVRSBvcykKICAgICBWQUxVRSBvYmosIGJs
b2NrLCB0YWJsZTsKIAogICAgIHJiX3NjYW5fYXJncyhhcmdjLCBhcmd2LCAi
MTEiLCAmb2JqLCAmYmxvY2spOwotICAgIGlmIChPQkpfRlJPWkVOKG9iaikp
IHJiX2Vycm9yX2Zyb3plbigib2JqZWN0Iik7CisgICAgcmJfY2hlY2tfZnJv
emVuKG9iaik7CiAgICAgaWYgKGFyZ2MgPT0gMSkgewogCWJsb2NrID0gcmJf
YmxvY2tfcHJvYygpOwogICAgIH0KZGlmZiAtLWdpdCBhL2hhc2guYyBiL2hh
c2guYwppbmRleCA4YmJhNTg2Li4xYTBlNWY4IDEwMDY0NAotLS0gYS9oYXNo
LmMKKysrIGIvaGFzaC5jCkBAIC0yNDgsNyArMjQ4LDcgQEAgcmJfaGFzaF9k
dXAoVkFMVUUgaGFzaCkKIHN0YXRpYyB2b2lkCiByYl9oYXNoX21vZGlmeV9j
aGVjayhWQUxVRSBoYXNoKQogewotICAgIGlmIChPQkpfRlJPWkVOKGhhc2gp
KSByYl9lcnJvcl9mcm96ZW4oImhhc2giKTsKKyAgICByYl9jaGVja19mcm96
ZW4oaGFzaCk7CiAgICAgaWYgKCFPQkpfVU5UUlVTVEVEKGhhc2gpICYmIHJi
X3NhZmVfbGV2ZWwoKSA+PSA0KQogCXJiX3JhaXNlKHJiX2VTZWN1cml0eUVy
cm9yLCAiSW5zZWN1cmU6IGNhbid0IG1vZGlmeSBoYXNoIik7CiB9CmRpZmYg
LS1naXQgYS9vYmplY3QuYyBiL29iamVjdC5jCmluZGV4IDM0Yjk1MjkuLjE1
NDMzOGIgMTAwNjQ0Ci0tLSBhL29iamVjdC5jCisrKyBiL29iamVjdC5jCkBA
IC03MTIsOSArNzEyLDcgQEAgcmJfb2JqX3RhaW50KFZBTFVFIG9iaikKIHsK
ICAgICByYl9zZWN1cmUoNCk7CiAgICAgaWYgKCFPQkpfVEFJTlRFRChvYmop
KSB7Ci0JaWYgKE9CSl9GUk9aRU4ob2JqKSkgewotCSAgICByYl9lcnJvcl9m
cm96ZW4oIm9iamVjdCIpOwotCX0KKwlyYl9jaGVja19mcm96ZW4ob2JqKTsK
IAlPQkpfVEFJTlQob2JqKTsKICAgICB9CiAgICAgcmV0dXJuIG9iajsKQEAg
LTczMyw5ICs3MzEsNyBAQCByYl9vYmpfdW50YWludChWQUxVRSBvYmopCiB7
CiAgICAgcmJfc2VjdXJlKDMpOwogICAgIGlmIChPQkpfVEFJTlRFRChvYmop
KSB7Ci0JaWYgKE9CSl9GUk9aRU4ob2JqKSkgewotCSAgICByYl9lcnJvcl9m
cm96ZW4oIm9iamVjdCIpOwotCX0KKwlyYl9jaGVja19mcm96ZW4ob2JqKTsK
IAlGTF9VTlNFVChvYmosIEZMX1RBSU5UKTsKICAgICB9CiAgICAgcmV0dXJu
IG9iajsKQEAgLTc2OCw5ICs3NjQsNyBAQCByYl9vYmpfdW50cnVzdChWQUxV
RSBvYmopCiB7CiAgICAgcmJfc2VjdXJlKDQpOwogICAgIGlmICghT0JKX1VO
VFJVU1RFRChvYmopKSB7Ci0JaWYgKE9CSl9GUk9aRU4ob2JqKSkgewotCSAg
ICByYl9lcnJvcl9mcm96ZW4oIm9iamVjdCIpOwotCX0KKwlyYl9jaGVja19m
cm96ZW4ob2JqKTsKIAlPQkpfVU5UUlVTVChvYmopOwogICAgIH0KICAgICBy
ZXR1cm4gb2JqOwpAQCAtNzg5LDkgKzc4Myw3IEBAIHJiX29ial90cnVzdChW
QUxVRSBvYmopCiB7CiAgICAgcmJfc2VjdXJlKDMpOwogICAgIGlmIChPQkpf
VU5UUlVTVEVEKG9iaikpIHsKLQlpZiAoT0JKX0ZST1pFTihvYmopKSB7Ci0J
ICAgIHJiX2Vycm9yX2Zyb3plbigib2JqZWN0Iik7Ci0JfQorCXJiX2NoZWNr
X2Zyb3plbihvYmopOwogCUZMX1VOU0VUKG9iaiwgRkxfVU5UUlVTVEVEKTsK
ICAgICB9CiAgICAgcmV0dXJuIG9iajsKZGlmZiAtLWdpdCBhL3N0cmluZy5j
IGIvc3RyaW5nLmMKaW5kZXggZjk2Yzc3MC4uMGRkMjM4OSAxMDA2NDQKLS0t
IGEvc3RyaW5nLmMKKysrIGIvc3RyaW5nLmMKQEAgLTM1MCwxNCArMzUwLDYg
QEAgc3RyX21vZF9jaGVjayhWQUxVRSBzLCBjb25zdCBjaGFyICpwLCBsb25n
IGxlbikKICAgICB9CiB9CiAKLXN0YXRpYyBpbmxpbmUgdm9pZAotc3RyX2Zy
b3plbl9jaGVjayhWQUxVRSBzKQotewotICAgIGlmIChPQkpfRlJPWkVOKHMp
KSB7Ci0JcmJfcmFpc2UocmJfZVJ1bnRpbWVFcnJvciwgInN0cmluZyBmcm96
ZW4iKTsKLSAgICB9Ci19Ci0KIHNpemVfdAogcmJfc3RyX2NhcGFjaXR5KFZB
TFVFIHN0cikKIHsKQEAgLTEyNDksNyArMTI0MSw3IEBAIHN0cl9tb2RpZmlh
YmxlKFZBTFVFIHN0cikKICAgICBpZiAoRkxfVEVTVChzdHIsIFNUUl9UTVBM
T0NLKSkgewogCXJiX3JhaXNlKHJiX2VSdW50aW1lRXJyb3IsICJjYW4ndCBt
b2RpZnkgc3RyaW5nOyB0ZW1wb3JhcmlseSBsb2NrZWQiKTsKICAgICB9Ci0g
ICAgaWYgKE9CSl9GUk9aRU4oc3RyKSkgcmJfZXJyb3JfZnJvemVuKCJzdHJp
bmciKTsKKyAgICByYl9jaGVja19mcm96ZW4oc3RyKTsKICAgICBpZiAoIU9C
Sl9VTlRSVVNURUQoc3RyKSAmJiByYl9zYWZlX2xldmVsKCkgPj0gNCkKIAly
Yl9yYWlzZShyYl9lU2VjdXJpdHlFcnJvciwgIkluc2VjdXJlOiBjYW4ndCBt
b2RpZnkgc3RyaW5nIik7CiB9CkBAIC0xMzM0LDcgKzEzMjYsNyBAQCB2b2lk
CiByYl9zdHJfYXNzb2NpYXRlKFZBTFVFIHN0ciwgVkFMVUUgYWRkKQogewog
ICAgIC8qIHNhbml0eSBjaGVjayAqLwotICAgIGlmIChPQkpfRlJPWkVOKHN0
cikpIHJiX2Vycm9yX2Zyb3plbigic3RyaW5nIik7CisgICAgcmJfY2hlY2tf
ZnJvemVuKHN0cik7CiAgICAgaWYgKFNUUl9BU1NPQ19QKHN0cikpIHsKIAkv
KiBhbHJlYWR5IGFzc29jaWF0ZWQgKi8KIAlyYl9hcnlfY29uY2F0KFJTVFJJ
Tkcoc3RyKS0+YXMuaGVhcC5hdXguc2hhcmVkLCBhZGQpOwpAQCAtMzU0OSw3
ICszNTQxLDcgQEAgcmJfc3RyX3N1Yl9iYW5nKGludCBhcmdjLCBWQUxVRSAq
YXJndiwgVkFMVUUgc3RyKQogICAgICAgICAgICAgICAgIHJlcGwgPSByYl9v
YmpfYXNfc3RyaW5nKHJlcGwpOwogICAgICAgICAgICAgfQogCSAgICBzdHJf
bW9kX2NoZWNrKHN0ciwgcCwgbGVuKTsKLQkgICAgc3RyX2Zyb3plbl9jaGVj
ayhzdHIpOworCSAgICByYl9jaGVja19mcm96ZW4oc3RyKTsKIAl9CiAJZWxz
ZSB7CiAJICAgIHJlcGwgPSByYl9yZWdfcmVnc3ViKHJlcGwsIHN0ciwgcmVn
cywgcGF0KTsKZGlmZiAtLWdpdCBhL3N0cnVjdC5jIGIvc3RydWN0LmMKaW5k
ZXggZjBhMzc3Yy4uNzhmODM2ZiAxMDA2NDQKLS0tIGEvc3RydWN0LmMKKysr
IGIvc3RydWN0LmMKQEAgLTE1MSw3ICsxNTEsNyBAQCBzdGF0aWMgVkFMVUUg
KCpjb25zdCByZWZfZnVuY1tdKShWQUxVRSkgPSB7CiBzdGF0aWMgdm9pZAog
cmJfc3RydWN0X21vZGlmeShWQUxVRSBzKQogewotICAgIGlmIChPQkpfRlJP
WkVOKHMpKSByYl9lcnJvcl9mcm96ZW4oIlN0cnVjdCIpOworICAgIHJiX2No
ZWNrX2Zyb3plbihzKTsKICAgICBpZiAoIU9CSl9VTlRSVVNURUQocykgJiYg
cmJfc2FmZV9sZXZlbCgpID49IDQpCiAgICAgICAgcmJfcmFpc2UocmJfZVNl
Y3VyaXR5RXJyb3IsICJJbnNlY3VyZTogY2FuJ3QgbW9kaWZ5IFN0cnVjdCIp
OwogfQpkaWZmIC0tZ2l0IGEvdHJhbnNjb2RlLmMgYi90cmFuc2NvZGUuYwpp
bmRleCBjNzE4MTgyLi5mNWE1NWU2IDEwMDY0NAotLS0gYS90cmFuc2NvZGUu
YworKysgYi90cmFuc2NvZGUuYwpAQCAtMjcxNCw5ICsyNzE0LDcgQEAgc3Ry
X2VuY29kZV9iYW5nKGludCBhcmdjLCBWQUxVRSAqYXJndiwgVkFMVUUgc3Ry
KQogICAgIFZBTFVFIG5ld3N0cjsKICAgICBpbnQgZW5jaWR4OwogCi0gICAg
aWYgKE9CSl9GUk9aRU4oc3RyKSkgeyAvKiBpbiBmdXR1cmUsIG1heSB1c2Ug
c3RyX2Zyb3plbl9jaGVjayBmcm9tIHN0cmluZy5jLCBidXQgdGhhdCdzIGN1
cnJlbnRseSBzdGF0aWMgKi8KLQlyYl9yYWlzZShyYl9lUnVudGltZUVycm9y
LCAic3RyaW5nIGZyb3plbiIpOwotICAgIH0KKyAgICByYl9jaGVja19mcm96
ZW4oc3RyKTsKIAogICAgIG5ld3N0ciA9IHN0cjsKICAgICBlbmNpZHggPSBz
dHJfdHJhbnNjb2RlKGFyZ2MsIGFyZ3YsICZuZXdzdHIpOwpkaWZmIC0tZ2l0
IGEvdmFyaWFibGUuYyBiL3ZhcmlhYmxlLmMKaW5kZXggNTMzM2FhMi4uMTZj
YTg2MiAxMDA2NDQKLS0tIGEvdmFyaWFibGUuYworKysgYi92YXJpYWJsZS5j
CkBAIC0xMDQyLDcgKzEwNDIsNyBAQCByYl9pdmFyX3NldChWQUxVRSBvYmos
IElEIGlkLCBWQUxVRSB2YWwpCiAKICAgICBpZiAoIU9CSl9VTlRSVVNURUQo
b2JqKSAmJiByYl9zYWZlX2xldmVsKCkgPj0gNCkKIAlyYl9yYWlzZShyYl9l
U2VjdXJpdHlFcnJvciwgIkluc2VjdXJlOiBjYW4ndCBtb2RpZnkgaW5zdGFu
Y2UgdmFyaWFibGUiKTsKLSAgICBpZiAoT0JKX0ZST1pFTihvYmopKSByYl9l
cnJvcl9mcm96ZW4oIm9iamVjdCIpOworICAgIHJiX2NoZWNrX2Zyb3plbihv
YmopOwogICAgIHN3aXRjaCAoVFlQRShvYmopKSB7CiAgICAgICBjYXNlIFRf
T0JKRUNUOgogICAgICAgICBpdl9pbmRleF90YmwgPSBST0JKRUNUX0lWX0lO
REVYX1RCTChvYmopOwpAQCAtMTMwNCw3ICsxMzA0LDcgQEAgcmJfb2JqX3Jl
bW92ZV9pbnN0YW5jZV92YXJpYWJsZShWQUxVRSBvYmosIFZBTFVFIG5hbWUp
CiAKICAgICBpZiAoIU9CSl9VTlRSVVNURUQob2JqKSAmJiByYl9zYWZlX2xl
dmVsKCkgPj0gNCkKIAlyYl9yYWlzZShyYl9lU2VjdXJpdHlFcnJvciwgIklu
c2VjdXJlOiBjYW4ndCBtb2RpZnkgaW5zdGFuY2UgdmFyaWFibGUiKTsKLSAg
ICBpZiAoT0JKX0ZST1pFTihvYmopKSByYl9lcnJvcl9mcm96ZW4oIm9iamVj
dCIpOworICAgIHJiX2NoZWNrX2Zyb3plbihvYmopOwogICAgIGlmICghcmJf
aXNfaW5zdGFuY2VfaWQoaWQpKSB7CiAJcmJfbmFtZV9lcnJvcihpZCwgImAl
cycgaXMgbm90IGFsbG93ZWQgYXMgYW4gaW5zdGFuY2UgdmFyaWFibGUgbmFt
ZSIsIHJiX2lkMm5hbWUoaWQpKTsKICAgICB9CkBAIC0xNjQ4LDggKzE2NDgs
NyBAQCByYl9jb25zdF9yZW1vdmUoVkFMVUUgbW9kLCBJRCBpZCkKIAogICAg
IGlmICghT0JKX1VOVFJVU1RFRChtb2QpICYmIHJiX3NhZmVfbGV2ZWwoKSA+
PSA0KQogCXJiX3JhaXNlKHJiX2VTZWN1cml0eUVycm9yLCAiSW5zZWN1cmU6
IGNhbid0IHJlbW92ZSBjb25zdGFudCIpOwotICAgIGlmIChPQkpfRlJPWkVO
KG1vZCkpIHJiX2Vycm9yX2Zyb3plbigiY2xhc3MvbW9kdWxlIik7Ci0KKyAg
ICByYl9jaGVja19mcm96ZW4obW9kKTsKICAgICBpZiAoIVJDTEFTU19JVl9U
QkwobW9kKSB8fCAhc3RfZGVsZXRlKFJDTEFTU19JVl9UQkwobW9kKSwgJm4s
ICZ2KSkgewogCWlmIChyYl9jb25zdF9kZWZpbmVkX2F0KG1vZCwgaWQpKSB7
CiAJICAgIHJiX25hbWVfZXJyb3IoaWQsICJjYW5ub3QgcmVtb3ZlICVzOjol
cyIsCkBAIC0xODE0LDE0ICsxODEzLDcgQEAgbW9kX2F2X3NldChWQUxVRSBr
bGFzcywgSUQgaWQsIFZBTFVFIHZhbCwgaW50IGlzY29uc3QpCiAKICAgICBp
ZiAoIU9CSl9VTlRSVVNURUQoa2xhc3MpICYmIHJiX3NhZmVfbGV2ZWwoKSA+
PSA0KQogCXJiX3JhaXNlKHJiX2VTZWN1cml0eUVycm9yLCAiSW5zZWN1cmU6
IGNhbid0IHNldCAlcyIsIGRlc3QpOwotICAgIGlmIChPQkpfRlJPWkVOKGts
YXNzKSkgewotCWlmIChCVUlMVElOX1RZUEUoa2xhc3MpID09IFRfTU9EVUxF
KSB7Ci0JICAgIHJiX2Vycm9yX2Zyb3plbigibW9kdWxlIik7Ci0JfQotCWVs
c2UgewotCSAgICByYl9lcnJvcl9mcm96ZW4oImNsYXNzIik7Ci0JfQotICAg
IH0KKyAgICByYl9jaGVja19mcm96ZW4oa2xhc3MpOwogICAgIGlmICghUkNM
QVNTX0lWX1RCTChrbGFzcykpIHsKIAlSQ0xBU1NfSVZfVEJMKGtsYXNzKSA9
IHN0X2luaXRfbnVtdGFibGUoKTsKICAgICB9CkBAIC0yMDY5LDggKzIwNjEs
NyBAQCByYl9tb2RfcmVtb3ZlX2N2YXIoVkFMVUUgbW9kLCBWQUxVRSBuYW1l
KQogICAgIH0KICAgICBpZiAoIU9CSl9VTlRSVVNURUQobW9kKSAmJiByYl9z
YWZlX2xldmVsKCkgPj0gNCkKIAlyYl9yYWlzZShyYl9lU2VjdXJpdHlFcnJv
ciwgIkluc2VjdXJlOiBjYW4ndCByZW1vdmUgY2xhc3MgdmFyaWFibGUiKTsK
LSAgICBpZiAoT0JKX0ZST1pFTihtb2QpKSByYl9lcnJvcl9mcm96ZW4oImNs
YXNzL21vZHVsZSIpOwotCisgICAgcmJfY2hlY2tfZnJvemVuKG1vZCk7CiAg
ICAgaWYgKFJDTEFTU19JVl9UQkwobW9kKSAmJiBzdF9kZWxldGUoUkNMQVNT
X0lWX1RCTChtb2QpLCAmbiwgJnZhbCkpIHsKIAlyZXR1cm4gKFZBTFVFKXZh
bDsKICAgICB9CmRpZmYgLS1naXQgYS92bS5jIGIvdm0uYwppbmRleCA1ZDI0
OWU1Li44ZWNkODljIDEwMDY0NAotLS0gYS92bS5jCisrKyBiL3ZtLmMKQEAg
LTE4NjIsMTAgKzE4NjIsNyBAQCB2bV9kZWZpbmVfbWV0aG9kKHJiX3RocmVh
ZF90ICp0aCwgVkFMVUUgb2JqLCBJRCBpZCwgVkFMVUUgaXNlcXZhbCwKIAkJ
ICAgICByYl9pZDJuYW1lKGlkKSwgcmJfb2JqX2NsYXNzbmFtZShvYmopKTsK
IAl9CiAKLQlpZiAoT0JKX0ZST1pFTihvYmopKSB7Ci0JICAgIHJiX2Vycm9y
X2Zyb3plbigib2JqZWN0Iik7Ci0JfQotCisJcmJfY2hlY2tfZnJvemVuKG9i
aik7CiAJa2xhc3MgPSByYl9zaW5nbGV0b25fY2xhc3Mob2JqKTsKIAlub2V4
ID0gTk9FWF9QVUJMSUM7CiAgICAgfQpkaWZmIC0tZ2l0IGEvdm1faW5zbmhl
bHBlci5jIGIvdm1faW5zbmhlbHBlci5jCmluZGV4IDk4NWEyZmIuLjk3NjE0
N2YgMTAwNjQ0Ci0tLSBhL3ZtX2luc25oZWxwZXIuYworKysgYi92bV9pbnNu
aGVscGVyLmMKQEAgLTEyOTAsOSArMTI5MCw4IEBAIHZtX3NldGl2YXIoVkFM
VUUgb2JqLCBJRCBpZCwgVkFMVUUgdmFsLCBJQyBpYykKICAgICBpZiAoIU9C
Sl9VTlRSVVNURUQob2JqKSAmJiByYl9zYWZlX2xldmVsKCkgPj0gNCkgewog
CXJiX3JhaXNlKHJiX2VTZWN1cml0eUVycm9yLCAiSW5zZWN1cmU6IGNhbid0
IG1vZGlmeSBpbnN0YW5jZSB2YXJpYWJsZSIpOwogICAgIH0KLSAgICBpZiAo
T0JKX0ZST1pFTihvYmopKSB7Ci0JcmJfZXJyb3JfZnJvemVuKCJvYmplY3Qi
KTsKLSAgICB9CisgICAgCisgICAgcmJfY2hlY2tfZnJvemVuKG9iaik7CiAK
ICAgICBpZiAoVFlQRShvYmopID09IFRfT0JKRUNUKSB7CiAJVkFMVUUga2xh
c3MgPSBSQkFTSUMob2JqKS0+a2xhc3M7CmRpZmYgLS1naXQgYS92bV9tZXRo
b2QuYyBiL3ZtX21ldGhvZC5jCmluZGV4IDUwZjBiMTIuLjhhZjUyOWUgMTAw
NjQ0Ci0tLSBhL3ZtX21ldGhvZC5jCisrKyBiL3ZtX21ldGhvZC5jCkBAIC0y
MTEsMTAgKzIxMSw4IEBAIHJiX21ldGhvZF9lbnRyeV9tYWtlKFZBTFVFIGts
YXNzLCBJRCBtaWQsIHJiX21ldGhvZF90eXBlX3QgdHlwZSwKIAkJcmJfY2xh
c3MybmFtZShyYl9pdmFyX2dldChrbGFzcywgYXR0YWNoZWQpKSk7CiAJbWlk
ID0gSURfQUxMT0NBVE9SOwogICAgIH0KLSAgICBpZiAoT0JKX0ZST1pFTihr
bGFzcykpIHsKLQlyYl9lcnJvcl9mcm96ZW4oImNsYXNzL21vZHVsZSIpOwot
ICAgIH0KIAorICAgIHJiX2NoZWNrX2Zyb3plbihrbGFzcyk7CiAgICAgbXRi
bCA9IFJDTEFTU19NX1RCTChrbGFzcyk7CiAKICAgICAvKiBjaGVjayByZS1k
ZWZpbml0aW9uICovCkBAIC00NjMsOCArNDYxLDcgQEAgcmVtb3ZlX21ldGhv
ZChWQUxVRSBrbGFzcywgSUQgbWlkKQogICAgIGlmIChyYl9zYWZlX2xldmVs
KCkgPj0gNCAmJiAhT0JKX1VOVFJVU1RFRChrbGFzcykpIHsKIAlyYl9yYWlz
ZShyYl9lU2VjdXJpdHlFcnJvciwgIkluc2VjdXJlOiBjYW4ndCByZW1vdmUg
bWV0aG9kIik7CiAgICAgfQotICAgIGlmIChPQkpfRlJPWkVOKGtsYXNzKSkK
LQlyYl9lcnJvcl9mcm96ZW4oImNsYXNzL21vZHVsZSIpOworICAgIHJiX2No
ZWNrX2Zyb3plbihrbGFzcyk7CiAgICAgaWYgKG1pZCA9PSBvYmplY3RfaWQg
fHwgbWlkID09IGlkX19zZW5kX18gfHwgbWlkID09IGlkSW5pdGlhbGl6ZSkg
ewogCXJiX3dhcm4oInJlbW92aW5nIGAlcycgbWF5IGNhdXNlIHNlcmlvdXMg
cHJvYmxlbXMiLCByYl9pZDJuYW1lKG1pZCkpOwogICAgIH0K