OSDN Git Service

check for null members in NotifyHandler
authorAndres Morales <anmorales@google.com>
Wed, 10 Feb 2016 19:56:25 +0000 (11:56 -0800)
committerAndres Morales <anmorales@google.com>
Wed, 10 Feb 2016 20:35:16 +0000 (12:35 -0800)
An unexpected message posted to the queue should not
crash the application.

Bug: 27097094
Change-Id: Ide6a07014660ff14e0f287660c534cfa1e0acad9

core/jni/android_view_ThreadedRenderer.cpp

index dd0e456..ac77007 100644 (file)
@@ -322,7 +322,11 @@ private:
 void NotifyHandler::handleMessage(const Message& message) {
     JNIEnv* env = getenv(mVm);
 
-    jobject target = env->NewLocalRef(mObserver->getObserverReference());
+    ObserverProxy* observer = mObserver.get();
+    LOG_ALWAYS_FATAL_IF(observer == nullptr, "received message with no observer configured");
+    LOG_ALWAYS_FATAL_IF(mBuffer == nullptr, "received message with no data to report");
+
+    jobject target = env->NewLocalRef(observer->getObserverReference());
 
     if (target != nullptr) {
         jlongArray javaBuffer = get_metrics_buffer(env, target);