From 85bada05059cae5e50e3ab20d8ea1bc9a1d26061 Mon Sep 17 00:00:00 2001 From: Max Kellermann Date: Tue, 28 Aug 2018 13:00:08 +0200 Subject: 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. --- src/java/Class.hxx | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) (limited to 'src') diff --git a/src/java/Class.hxx b/src/java/Class.hxx index 44425d1b7..860f156b6 100644 --- a/src/java/Class.hxx +++ b/src/java/Class.hxx @@ -1,5 +1,5 @@ /* - * Copyright (C) 2010-2011 Max Kellermann + * Copyright (C) 2010-2018 Max Kellermann * * 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 @@ -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); -- cgit v1.2.3