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:
Max Kellermann 2018-08-28 13:00:08 +02:00
parent cf96135125
commit 85bada0505

View File

@ -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
* modification, are permitted provided that the following conditions
@ -31,6 +31,7 @@
#define JAVA_CLASS_HXX
#include "Ref.hxx"
#include "Exception.hxx"
#include <assert.h>
@ -68,10 +69,8 @@ namespace Java {
assert(name != nullptr);
jclass cls = env->FindClass(name);
if (cls == nullptr) {
env->ExceptionClear();
if (DiscardException(env))
return false;
}
Set(env, cls);
env->DeleteLocalRef(cls);