- Throw(NULL) should not clear pending exception.
- ThrowNew(..., NULL) should use default constructor.
This commit is contained in:
jfrijters 2013-10-25 08:44:25 +00:00
Родитель b915417f4e
Коммит 7330021382
1 изменённых файлов: 6 добавлений и 3 удалений

Просмотреть файл

@ -1726,7 +1726,10 @@ namespace IKVM.Runtime
{
ManagedJNIEnv env = pEnv->GetManagedJNIEnv();
Exception x = UnwrapRef(env, throwable) as Exception;
env.pendingException = x;
if (x != null)
{
env.pendingException = x;
}
return JNI_OK;
}
@ -1734,7 +1737,7 @@ namespace IKVM.Runtime
{
ManagedJNIEnv env = pEnv->GetManagedJNIEnv();
TypeWrapper wrapper = TypeWrapper.FromClass((java.lang.Class)UnwrapRef(env, clazz));
MethodWrapper mw = wrapper.GetMethodWrapper("<init>", "(Ljava.lang.String;)V", false);
MethodWrapper mw = wrapper.GetMethodWrapper("<init>", msg == null ? "()V" : "(Ljava.lang.String;)V", false);
if(mw != null)
{
jint rc;
@ -1743,7 +1746,7 @@ namespace IKVM.Runtime
{
wrapper.Finish();
java.lang.reflect.Constructor cons = (java.lang.reflect.Constructor)mw.ToMethodOrConstructor(false);
exception = (Exception)cons.newInstance(new object[] { StringFromOEM(msg) }, env.callerID);
exception = (Exception)cons.newInstance(msg == null ? new object[0] : new object[] { StringFromOEM(msg) }, env.callerID);
rc = JNI_OK;
}
catch(RetargetableJavaException x)