diff --git a/jnius/jnius_export_class.pxi b/jnius/jnius_export_class.pxi index 1256720..a62a913 100644 --- a/jnius/jnius_export_class.pxi +++ b/jnius/jnius_export_class.pxi @@ -218,11 +218,14 @@ cdef class JavaClass(object): # create the object j_self = j_env[0].NewObjectA(j_env, self.j_cls, constructor, j_args) + + check_exception(j_env) if j_self == NULL: raise JavaException('Unable to instanciate {0}'.format( self.__javaclass__)) self.j_self = create_local_ref(j_env, j_self) + j_env[0].DeleteLocalRef(j_env, j_self) finally: if j_args != NULL: free(j_args) diff --git a/jnius/jnius_utils.pxi b/jnius/jnius_utils.pxi index 7d893b4..05d54f7 100644 --- a/jnius/jnius_utils.pxi +++ b/jnius/jnius_utils.pxi @@ -77,6 +77,9 @@ cdef bytes lookup_java_object_name(JNIEnv *j_env, jobject j_obj): cdef jmethodID jmeth = j_env[0].GetMethodID(j_env, jcls2, 'getName', '()Ljava/lang/String;') cdef jobject js = j_env[0].CallObjectMethod(j_env, jcls, jmeth) name = convert_jobject_to_python(j_env, b'Ljava/lang/String;', js) + j_env[0].DeleteLocalRef(j_env, js) + j_env[0].DeleteLocalRef(j_env, jcls) + j_env[0].DeleteLocalRef(j_env, jcls2) return name.replace('.', '/')