libbluray | branch: master | hpi1 <[email protected]> | Mon Mar 27 15:32:35 2017 +0300| [b72012a0dc548c6639252db2b533bcf4c09be0dd] | committer: hpi1
bdj_make_object(): check for errors > http://git.videolan.org/gitweb.cgi/libbluray.git/?a=commit;h=b72012a0dc548c6639252db2b533bcf4c09be0dd --- src/libbluray/bdj/native/util.c | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/src/libbluray/bdj/native/util.c b/src/libbluray/bdj/native/util.c index bf4e97a..a4371a2 100644 --- a/src/libbluray/bdj/native/util.c +++ b/src/libbluray/bdj/native/util.c @@ -30,19 +30,31 @@ jobject bdj_make_object(JNIEnv* env, const char* name, const char* sig, ...) { - jclass obj_class = (*env)->FindClass(env, name); - jmethodID obj_constructor = (*env)->GetMethodID(env, obj_class, "<init>", sig); + va_list ap; + jclass obj_class; + jmethodID obj_constructor; + jobject obj; + obj_class = (*env)->FindClass(env, name); if (!obj_class) { BD_DEBUG(DBG_BDJ | DBG_CRIT, "Class %s not found\n", name); return NULL; } - va_list ap; + obj_constructor = (*env)->GetMethodID(env, obj_class, "<init>", sig); + if (!obj_constructor) { + BD_DEBUG(DBG_BDJ | DBG_CRIT, "Class %s constructor %s not found\n", name, sig); + return NULL; + } + va_start(ap, sig); - jobject obj = (*env)->NewObjectV(env, obj_class, obj_constructor, ap); + obj = (*env)->NewObjectV(env, obj_class, obj_constructor, ap); va_end(ap); + if (!obj) { + BD_DEBUG(DBG_BDJ | DBG_CRIT, "Failed to create %s\n", name); + } + return obj; } _______________________________________________ libbluray-devel mailing list [email protected] https://mailman.videolan.org/listinfo/libbluray-devel
