comparison src/share/vm/prims/jni.cpp @ 14290:d050fbf914d8

8031427: AllocObject and Unsafe.allocateInstance segfault for primitive types Summary: The fix just throws an InstantiationException if the Klass is NULL. Reviewed-by: coleenp, twisti, jrose Contributed-by: gdub <duboscq@ssw.jku.at>
author gdub
date Thu, 23 Jan 2014 16:02:14 -0500
parents a3ba776d6ab6
children febc6428bc79
comparison
equal deleted inserted replaced
14289:7444c21b8b71 14290:d050fbf914d8
1353 } 1353 }
1354 1354
1355 1355
1356 static instanceOop alloc_object(jclass clazz, TRAPS) { 1356 static instanceOop alloc_object(jclass clazz, TRAPS) {
1357 KlassHandle k(THREAD, java_lang_Class::as_Klass(JNIHandles::resolve_non_null(clazz))); 1357 KlassHandle k(THREAD, java_lang_Class::as_Klass(JNIHandles::resolve_non_null(clazz)));
1358 if (k == NULL) {
1359 ResourceMark rm(THREAD);
1360 THROW_(vmSymbols::java_lang_InstantiationException(), NULL);
1361 }
1358 k()->check_valid_for_instantiation(false, CHECK_NULL); 1362 k()->check_valid_for_instantiation(false, CHECK_NULL);
1359 InstanceKlass::cast(k())->initialize(CHECK_NULL); 1363 InstanceKlass::cast(k())->initialize(CHECK_NULL);
1360 instanceOop ih = InstanceKlass::cast(k())->allocate_instance(THREAD); 1364 instanceOop ih = InstanceKlass::cast(k())->allocate_instance(THREAD);
1361 return ih; 1365 return ih;
1362 } 1366 }