java/Class: use DiscardException() in FindOptional()
Sometimes, the JVM returns a non-nullptr value with an exception pending (seen on Android 1.6, maybe a Dalvik bug?). Let's catch all such cases.
This commit is contained in:
parent
cf96135125
commit
85bada0505
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (C) 2010-2011 Max Kellermann <max.kellermann@gmail.com>
|
* Copyright (C) 2010-2018 Max Kellermann <max.kellermann@gmail.com>
|
||||||
*
|
*
|
||||||
* Redistribution and use in source and binary forms, with or without
|
* Redistribution and use in source and binary forms, with or without
|
||||||
* modification, are permitted provided that the following conditions
|
* modification, are permitted provided that the following conditions
|
||||||
@ -31,6 +31,7 @@
|
|||||||
#define JAVA_CLASS_HXX
|
#define JAVA_CLASS_HXX
|
||||||
|
|
||||||
#include "Ref.hxx"
|
#include "Ref.hxx"
|
||||||
|
#include "Exception.hxx"
|
||||||
|
|
||||||
#include <assert.h>
|
#include <assert.h>
|
||||||
|
|
||||||
@ -68,10 +69,8 @@ namespace Java {
|
|||||||
assert(name != nullptr);
|
assert(name != nullptr);
|
||||||
|
|
||||||
jclass cls = env->FindClass(name);
|
jclass cls = env->FindClass(name);
|
||||||
if (cls == nullptr) {
|
if (DiscardException(env))
|
||||||
env->ExceptionClear();
|
|
||||||
return false;
|
return false;
|
||||||
}
|
|
||||||
|
|
||||||
Set(env, cls);
|
Set(env, cls);
|
||||||
env->DeleteLocalRef(cls);
|
env->DeleteLocalRef(cls);
|
||||||
|
Loading…
Reference in New Issue
Block a user