[PATCH] java.lang.Class newInstance fixes
Dalibor Topic
kaffe@rufus.w3.org
Mon, 4 Mar 2002 17:07:55 +0100
--------------Boundary-00=_75IGO0KNODOY8ROK0CDE
Content-Type: text/plain;
charset="iso-8859-15"
Content-Transfer-Encoding: 8bit
Hi,
I've been running into a few bugs with reflection, so I wrote a
small patch that fixes some issues with java.lang.Class. I reimplemented
newInstance in Java, since it could be done without directly using
native methods.
have fun.
dali
--------------Boundary-00=_75IGO0KNODOY8ROK0CDE
Content-Type: text/x-diff;
charset="iso-8859-15";
name="patch.diff"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="patch.diff"
ZGlmZiAtdXIgLXggQlVJTEQqIC14ICoubG9nIC14ICoubyAteCBNYWtlKiAteCBjb25maWcqIC14
ICouaW4gLXggaW5jbHVkZSAteCAqLipvIC14IG1hbiAteCBzY3JpcHRzIC14IGxpYnRvb2wgLXgg
Kndhcm5pbmdzIC14ICoubGEgLXggLmxpYnMgLXggcmVidWlsZExpYiogLXggVGVzdFNjcmlwdCBr
YWZmZS9saWJyYXJpZXMvY2xpYi9uYXRpdmUvQ2xhc3MuYyBwYXRjaGVkLWthZmZlL2xpYnJhcmll
cy9jbGliL25hdGl2ZS9DbGFzcy5jCi0tLSBrYWZmZS9saWJyYXJpZXMvY2xpYi9uYXRpdmUvQ2xh
c3MuYwlGcmkgSnVuICAxIDIxOjMxOjQ0IDIwMDEKKysrIHBhdGNoZWQta2FmZmUvbGlicmFyaWVz
L2NsaWIvbmF0aXZlL0NsYXNzLmMJU3VuIE1hciAgMyAxMTozNTo1MCAyMDAyCkBAIC0xNzcsMTkg
KzE3Nyw2IEBACiB9CiAKIC8qCi0gKiBDcmVhdGUgYSBuZXcgaW5zdGFuY2Ugb2YgdGhlIGRlcml2
ZWQgY2xhc3MuCi0gKi8KLXN0cnVjdCBIamF2YV9sYW5nX09iamVjdCoKLWphdmFfbGFuZ19DbGFz
c19uZXdJbnN0YW5jZShzdHJ1Y3QgSGphdmFfbGFuZ19DbGFzcyogdGhpcykKLXsKLQlpZiAoQ0xB
U1NfSVNfUFJJTUlUSVZFKHRoaXMpKSB7Ci0JCVNpZ25hbEVycm9yKCJqYXZhLmxhbmcuSW5zdGFu
dGlhdGlvbkV4Y2VwdGlvbiIsCi0JCQkgICAgQ0xBU1NfQ05BTUUodGhpcykpOwotCX0KLQlyZXR1
cm4gKGV4ZWN1dGVfamF2YV9jb25zdHJ1Y3RvcigwLCAwLCB0aGlzLCAiKClWIikpOwotfQotCi0v
KgogICogUmV0dXJuIHN1cGVyIGNsYXNzLgogICoKICAqIE5vdGUgdGhhdCB0aGUgc3BlY3MgZGVt
YW5kcyB0byByZXR1cm4gbnVsbCBpZiB0aGUgY2xhc3Mgb2JqZWN0IGlzIGFuCkBAIC03NzYsOCAr
NzYzLDEzIEBACiAJICogcGFyYW1ldGVyIHRvIGFsbCBnZXQoRGVjbGFyZWQpe01ldGhvZHxDb25z
dHJ1Y3Rvcn0gZnVuY3Rpb25zCiAJICogaXMgdHJlYXRlZCBsaWtlIHBhc3NpbmcgYW4gZW1wdHkg
YXJyYXkgIm5ldyBDbGFzcyBbXSB7fSIKIAkgKi8KLQlpZiAoKGFyZ3R5cGVzID09IE5VTEwpICYm
IE1FVEhPRF9OQVJHUyhtdGgpID09IDApIHsKLQkJcmV0dXJuICgxKTsKKwlpZiAoYXJndHlwZXMg
PT0gTlVMTCkgeworCQlpZiAoTUVUSE9EX05BUkdTKG10aCkgPT0gMCkgeworCQkJcmV0dXJuICgx
KTsKKwkJfQorCQllbHNlIHsKKwkJCXJldHVybiAoMCk7CisJCX0KIAl9CiAKIAlpZiAoQVJSQVlf
U0laRShhcmd0eXBlcykgIT0gTUVUSE9EX05BUkdTKG10aCkpIHsKQEAgLTgwMCw2ICs3OTIsMTcg
QEAKIAlyZXR1cm4gKDEpOwogfQogCisvKiBDaGVjayB3aGV0aGVyIHRoZSBsb2FkaW5nIG9mIHRo
ZSBjbGFzcyBoYXMgZmFpbGVkLiBUaHJvdyBhbiBOb0NsYXNzRGVmRm91bmRFcnJvcgorICAgaW4g
dGhhdCB0aGUgY2FzZS4KKyovCitzdGF0aWMKK3ZvaWQKK2NoZWNrSWZDbGFzc0hhc0ZhaWxlZChz
dHJ1Y3QgSGphdmFfbGFuZ19DbGFzcyogY2xhcykKK3sKKwlpZiAoY2xhcyAhPSBOVUxMICYmIGNs
YXMtPnN0YXRlID09IENTVEFURV9GQUlMRUQpIHsKKwkJU2lnbmFsRXJyb3IoImphdmEubGFuZy5O
b0NsYXNzRGVmRm91bmRFcnJvciIsIENMQVNTX0NOQU1FKGNsYXMpKTsKKwl9Cit9CiAKIHN0YXRp
YwogSGphdmFfbGFuZ19yZWZsZWN0X01ldGhvZCoKQEAgLTgyNyw2ICs4MzEsOCBAQAogCUhqYXZh
X2xhbmdfcmVmbGVjdF9NZXRob2QgKnJtZXRoOwogCiAJY2xhcyA9IHRoaXM7CisJY2hlY2tJZkNs
YXNzSGFzRmFpbGVkKGNsYXMpOworCiAJZG8gewogCQlybWV0aCA9IGZpbmRNYXRjaGluZ01ldGhv
ZChjbGFzLCBuYW1lLCBhcnIsIGRlY2xhcmVkKTsKIAkJaWYgKHJtZXRoICE9IDApIHsKQEAgLTg2
MiwxMSArODY4LDE3IEBACiB7CiAJSGphdmFfbGFuZ19DbGFzcyogY2xhcyA9IHRoaXM7CiAKLQlN
ZXRob2QqIG10aCA9IENMQVNTX01FVEhPRFMoY2xhcyk7Ci0JaW50IG4gPSBDTEFTU19OTUVUSE9E
UyhjbGFzKTsKKwlNZXRob2QqIG10aDsKKwlpbnQgbjsKIAlpbnQgaTsKKworCWNoZWNrSWZDbGFz
c0hhc0ZhaWxlZChjbGFzKTsKKworCW10aCA9IENMQVNTX01FVEhPRFMoY2xhcyk7CisJbiA9IENM
QVNTX05NRVRIT0RTKGNsYXMpOworCiAJZm9yIChpID0gMDsgIGkgPCBuOyAgKyttdGgsICsraSkg
ewotCQlpZiAoKChtdGgtPmFjY2ZsYWdzICYgQUNDX1BVQkxJQykgfHwgZGVjbGFyZWQpICYmICht
dGgtPmFjY2ZsYWdzICYgQUNDX0NPTlNUUlVDVE9SKSkgeworCQlpZiAoKChtdGgtPmFjY2ZsYWdz
ICYgQUNDX1BVQkxJQykgfHwgZGVjbGFyZWQpICYmIChNRVRIT0RfSVNfQ09OU1RSVUNUT1IobXRo
KSkpIHsKIAkJCWlmIChjaGVja1BhcmFtZXRlcnMobXRoLCBhcnIpKQogCQkJCXJldHVybiAobWFr
ZUNvbnN0cnVjdG9yKGNsYXMsIGkpKTsKIAkJfQpkaWZmIC11ciAteCBCVUlMRCogLXggKi5sb2cg
LXggKi5vIC14IE1ha2UqIC14IGNvbmZpZyogLXggKi5pbiAteCBpbmNsdWRlIC14ICouKm8gLXgg
bWFuIC14IHNjcmlwdHMgLXggbGlidG9vbCAteCAqd2FybmluZ3MgLXggKi5sYSAteCAubGlicyAt
eCByZWJ1aWxkTGliKiAteCBUZXN0U2NyaXB0IGthZmZlL2xpYnJhcmllcy9qYXZhbGliL2phdmEv
bGFuZy9DbGFzcy5qYXZhIHBhdGNoZWQta2FmZmUvbGlicmFyaWVzL2phdmFsaWIvamF2YS9sYW5n
L0NsYXNzLmphdmEKLS0tIGthZmZlL2xpYnJhcmllcy9qYXZhbGliL2phdmEvbGFuZy9DbGFzcy5q
YXZhCVRodSBEZWMgMjAgMTM6NTA6NTcgMjAwMQorKysgcGF0Y2hlZC1rYWZmZS9saWJyYXJpZXMv
amF2YWxpYi9qYXZhL2xhbmcvQ2xhc3MuamF2YQlTdW4gTWFyICAzIDEyOjAyOjU0IDIwMDIKQEAg
LTE0LDYgKzE0LDcgQEAKIGltcG9ydCBqYXZhLmlvLlNlcmlhbGl6YWJsZTsKIGltcG9ydCBqYXZh
LmxhbmcucmVmbGVjdC5Db25zdHJ1Y3RvcjsKIGltcG9ydCBqYXZhLmxhbmcucmVmbGVjdC5GaWVs
ZDsKK2ltcG9ydCBqYXZhLmxhbmcucmVmbGVjdC5JbnZvY2F0aW9uVGFyZ2V0RXhjZXB0aW9uOwog
aW1wb3J0IGphdmEubGFuZy5yZWZsZWN0Lk1lbWJlcjsKIGltcG9ydCBqYXZhLmxhbmcucmVmbGVj
dC5NZXRob2Q7CiBpbXBvcnQgamF2YS5sYW5nLnJlZmxlY3QuTW9kaWZpZXI7CkBAIC0zMzAsNyAr
MzMxLDI5IEBACiAKIG5hdGl2ZSBwdWJsaWMgYm9vbGVhbiBpc1ByaW1pdGl2ZSgpOwogCi1uYXRp
dmUgcHVibGljIE9iamVjdCBuZXdJbnN0YW5jZSgpIHRocm93cyBJbnN0YW50aWF0aW9uRXhjZXB0
aW9uLCBJbGxlZ2FsQWNjZXNzRXhjZXB0aW9uOworcHVibGljIE9iamVjdCBuZXdJbnN0YW5jZSgp
IHRocm93cyBJbnN0YW50aWF0aW9uRXhjZXB0aW9uLCBJbGxlZ2FsQWNjZXNzRXhjZXB0aW9uIHsK
KyAgICBpZiAoTW9kaWZpZXIuaXNBYnN0cmFjdChnZXRNb2RpZmllcnMoKSkgfHwgaXNJbnRlcmZh
Y2UoKSB8fCBpc1ByaW1pdGl2ZSgpKSB7CisJdGhyb3cgbmV3IEluc3RhbnRpYXRpb25FeGNlcHRp
b24oZ2V0TmFtZSgpKTsKKyAgICB9CisgICAgZWxzZSB7CisJdHJ5IHsKKwkgICAgcmV0dXJuIGdl
dERlY2xhcmVkQ29uc3RydWN0b3IobnVsbCkubmV3SW5zdGFuY2UobnVsbCk7CisJfQorCWNhdGNo
IChJbnZvY2F0aW9uVGFyZ2V0RXhjZXB0aW9uIGUpIHsKKwkgICAgLy8gd2UgcmV0aHJvdyBydW50
aW1lIGV4Y2VwdGlvbnMgdGhyb3duIGJ5IGNvbnN0cnVjdG9ycywgaW4gb3JkZXIgdG8KKwkgICAg
Ly8gcGFzcyBvbiBleGNlcHRpb25zIGxpa2UgTnVsbFBvaW50ZXJFeGNlcHRpb24gdG8gdGhlIGNh
bGxlci4KKwkgICAgaWYgKGUuZ2V0VGFyZ2V0RXhjZXB0aW9uKCkgaW5zdGFuY2VvZiBSdW50aW1l
RXhjZXB0aW9uKSB7CisJCXRocm93IChSdW50aW1lRXhjZXB0aW9uKSBlLmdldFRhcmdldEV4Y2Vw
dGlvbigpOworCSAgICB9CisJICAgIGVsc2UgeworCQl0aHJvdyBuZXcgSW5zdGFudGlhdGlvbkV4
Y2VwdGlvbihlLmdldFRhcmdldEV4Y2VwdGlvbigpLmdldE1lc3NhZ2UoKSk7CisJICAgIH0KKwl9
CisJY2F0Y2ggKE5vU3VjaE1ldGhvZEV4Y2VwdGlvbiBlKSB7CisJICAgIHRocm93IG5ldyBJbnN0
YW50aWF0aW9uRXhjZXB0aW9uKGUuZ2V0TWVzc2FnZSgpKTsKKwl9CisgICAgfQorfQogCiAvKgog
ICogdG9TdHJpbmcoKQpkaWZmIC11ciAteCBCVUlMRCogLXggKi5sb2cgLXggKi5vIC14IE1ha2Uq
IC14IGNvbmZpZyogLXggKi5pbiAteCBpbmNsdWRlIC14ICouKm8gLXggbWFuIC14IHNjcmlwdHMg
LXggbGlidG9vbCAteCAqd2FybmluZ3MgLXggKi5sYSAteCAubGlicyAteCByZWJ1aWxkTGliKiAt
eCBUZXN0U2NyaXB0IGthZmZlL3Rlc3QvcmVncmVzc2lvbi9Db25zdHJ1Y3RvclRlc3QuamF2YSBw
YXRjaGVkLWthZmZlL3Rlc3QvcmVncmVzc2lvbi9Db25zdHJ1Y3RvclRlc3QuamF2YQotLS0ga2Fm
ZmUvdGVzdC9yZWdyZXNzaW9uL0NvbnN0cnVjdG9yVGVzdC5qYXZhCUZyaSBGZWIgMTIgMTQ6NTE6
MDcgMTk5OQorKysgcGF0Y2hlZC1rYWZmZS90ZXN0L3JlZ3Jlc3Npb24vQ29uc3RydWN0b3JUZXN0
LmphdmEJU2F0IE1hciAgMiAxNTo0NzoxNiAyMDAyCkBAIC0xLDcgKzEsNyBAQAogLyoqCiAgKiB0
ZXN0IHRoYXQgYSBjbGFzcyB3aG9zZSBvYmplY3RzIGFyZSBpbnN0YW50aWF0ZWQgdmlhIG5ld0lu
c3RhbmNlCiAgKiBkbyBpbiBmYWN0IGhhdmUgYSBkZWZhdWx0LCBuby1hcmcgY29uc3RydWN0b3Iu
ICBJZiB0aGV5IGRvbid0LAotICogYSBOb1N1Y2hNZXRob2RFcnJvciBtdXN0IGJlIHRocm93bi4K
KyAqIGFuIEluc3RhbnRpYXRpb25FeGNlcHRpb24gbXVzdCBiZSB0aHJvd24uCiAgKi8KIHB1Ymxp
YyBjbGFzcyBDb25zdHJ1Y3RvclRlc3QgewogICBwdWJsaWMgQ29uc3RydWN0b3JUZXN0KGludCBp
KSB7fQpAQCAtMTAsNyArMTAsNyBAQAogICB7CiAgICAgdHJ5IHsKIAlPYmplY3QgbyA9IENvbnN0
cnVjdG9yVGVzdC5jbGFzcy5uZXdJbnN0YW5jZSgpOwotICAgIH0gY2F0Y2ggKE5vU3VjaE1ldGhv
ZEVycm9yIGUpIHsKKyAgICB9IGNhdGNoIChJbnN0YW50aWF0aW9uRXhjZXB0aW9uIGUpIHsKIAlT
eXN0ZW0ub3V0LnByaW50bG4oIlN1Y2Nlc3MuIik7CiAJcmV0dXJuOwogICAgIH0KCgoKCgo=
--------------Boundary-00=_75IGO0KNODOY8ROK0CDE
Content-Type: text/plain;
charset="iso-8859-15";
name="ChangeLog"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="ChangeLog"
CSogbGlicmFyaWVzL2NsaWIvbmF0aXZlL0NsYXNzLmM6CgkoamF2YV9sYW5nX0NsYXNzX25ld0lu
c3RhbmNlKSByZW1vdmVkLgoJKGNoZWNrUGFyYW1ldGVycykgZml4ZWQgTnVsbFBvaW50ZXJFeGNl
cHRpb24gaWYgYXJndHlwZXMgd2VyZQoJTlVMTCwgYnV0IHRoZSBtZXRob2QgZGlkbid0IHRha2Ug
MCBhcmd1bWVudHMuCgkoY2hlY2tJZkNsYXNzSGFzRmFpbGVkKSBuZXcgZnVuY3Rpb24uCgkoamF2
YV9sYW5nX0NsYXNzX2dldE1ldGhvZDApIGFkZGVkIGNhbGwgdG8gY2hlY2tJZkNsYXNzSGFzRmFp
bGVkLAoJdG8gYXZvaWQgZmlkZGxpbmcgd2l0aCBjbGFzc2VzIHRoYXQgZGlkbid0IGxvYWQgYW5k
IGxpbmsgcHJvcGVybHkuCgkoamF2YV9sYW5nX0NsYXNzX2dldENvbnN0cnVjdG9yMCkgYWRkZWQg
Y2FsbCB0byBjaGVja0lmQ2xhc3NIYXNGYWlsZWQsCgl0byBhdm9pZCBmaWRkbGluZyB3aXRoIGNs
YXNzZXMgdGhhdCBkaWRuJ3QgbG9hZCBhbmQgbGluawoJcHJvcGVybHkuIFVzZSBNRVRIT0RfSVNf
Q09OU1RSVUNUT1IgaW5zdGVhZCBvZiBiaXQgb3BlcmF0aW9ucy4KCQoJKiBsaWJyYXJpZXMvamF2
YWxpYi9qYXZhL2xhbmcvQ2xhc3MuamF2YToKCShuZXdJbnN0YW5jZSkgcmVpbXBsZW1lbnRlZCBp
biBKYXZhIHVzaW5nIHJlZmxlY3Rpb24uIEFkZGVkIGNoZWNrcwoJZm9yIGludGVyZmFjZXMgYW5k
IGFic3RyYWN0IGNsYXNzZXMuCgkKCSogdGVzdC9yZWdyZXNzaW9uL0NvbnN0cnVjdG9yVGVzdC5q
YXZhOgoJQ2hhbmdlZCBleHBlY3RlZCBleGNlcHRpb24gdG8gSW5zdGFudGlhdGlvbkV4Y2VwdGlv
biwgc2luY2UgdGhlCglzcGVjIGltcGxpZXMgdGhhdCBhbiBJbnN0YW50aWF0aW9uRXhjZXB0aW9u
IGlzIHRocm93biBpZiB0aGUgY2FsbAoJdG8gbmV3SW5zdGFuY2UgZmFpbHMgZm9yIHNvbWUgcmVh
c29uLgo=
--------------Boundary-00=_75IGO0KNODOY8ROK0CDE--
_________________________________________________________
Do You Yahoo!?
Get your free @yahoo.com address at http://mail.yahoo.com