diff --git a/core/jni/android_view_DisplayEventReceiver.cpp b/core/jni/android_view_DisplayEventReceiver.cpp index 0c3ff6c28ea7d..410b44161cf64 100644 --- a/core/jni/android_view_DisplayEventReceiver.cpp +++ b/core/jni/android_view_DisplayEventReceiver.cpp @@ -18,19 +18,17 @@ //#define LOG_NDEBUG 0 -#include - -#include - #include +#include #include +#include +#include +#include #include #include #include + #include "android_os_MessageQueue.h" - -#include - #include "core_jni_helpers.h" namespace android { @@ -133,6 +131,12 @@ static jobject createJavaVsyncEventData(JNIEnv* env, VsyncEventData vsyncEventDa gDisplayEventReceiverClassInfo .frameTimelineClassInfo.clazz, /*initial element*/ NULL)); + if (!frameTimelineObjs.get() || env->ExceptionCheck()) { + ALOGW("%s: Failed to create FrameTimeline array", __func__); + LOGW_EX(env); + env->ExceptionClear(); + return NULL; + } for (int i = 0; i < VsyncEventData::kFrameTimelinesLength; i++) { VsyncEventData::FrameTimeline frameTimeline = vsyncEventData.frameTimelines[i]; ScopedLocalRef @@ -144,6 +148,12 @@ static jobject createJavaVsyncEventData(JNIEnv* env, VsyncEventData vsyncEventDa frameTimeline.vsyncId, frameTimeline.expectedPresentationTime, frameTimeline.deadlineTimestamp)); + if (!frameTimelineObj.get() || env->ExceptionCheck()) { + ALOGW("%s: Failed to create FrameTimeline object", __func__); + LOGW_EX(env); + env->ExceptionClear(); + return NULL; + } env->SetObjectArrayElement(frameTimelineObjs.get(), i, frameTimelineObj.get()); } return env->NewObject(gDisplayEventReceiverClassInfo.vsyncEventDataClassInfo.clazz,