diff --git a/core/jni/eventlog_helper.h b/core/jni/eventlog_helper.h
index 3a05195..19628e5 100644
--- a/core/jni/eventlog_helper.h
+++ b/core/jni/eventlog_helper.h
@@ -155,11 +155,6 @@
             return;
         }
 
-        ScopedIntArrayRO tags(env);
-        if (jTags != nullptr) {
-            tags.reset(jTags);
-        }
-
         while (1) {
             log_msg log_msg;
             int ret = android_logger_list_read(logger_list.get(), &log_msg);
@@ -187,6 +182,7 @@
 
             if (jTags != nullptr) {
                 bool found = false;
+                ScopedIntArrayRO tags(env, jTags);
                 for (size_t i = 0; !found && i < tags.size(); ++i) {
                     found = (tag == tags[i]);
                 }
diff --git a/services/core/jni/com_android_server_GraphicsStatsService.cpp b/services/core/jni/com_android_server_GraphicsStatsService.cpp
index 8385020..44e27a5 100644
--- a/services/core/jni/com_android_server_GraphicsStatsService.cpp
+++ b/services/core/jni/com_android_server_GraphicsStatsService.cpp
@@ -41,14 +41,11 @@
 static void addToDump(JNIEnv* env, jobject, jlong dumpPtr, jstring jpath, jstring jpackage,
         jint versionCode, jlong startTime, jlong endTime, jbyteArray jdata) {
     std::string path;
-    const ProfileData* data = nullptr;
     LOG_ALWAYS_FATAL_IF(jdata == nullptr && jpath == nullptr, "Path and data can't both be null");
-    ScopedByteArrayRO buffer{env};
-    if (jdata != nullptr) {
-        buffer.reset(jdata);
+    ScopedNullableByteArrayRO buffer(env, jdata);
+    if (buffer.size() != -1) {
         LOG_ALWAYS_FATAL_IF(buffer.size() != sizeof(ProfileData),
-                "Buffer size %zu doesn't match expected %zu!", buffer.size(), sizeof(ProfileData));
-        data = reinterpret_cast<const ProfileData*>(buffer.get());
+                "Buffer size %zd doesn't match expected %zu!", buffer.size(), sizeof(ProfileData));
     }
     if (jpath != nullptr) {
         ScopedUtfChars pathChars(env, jpath);
@@ -61,7 +58,8 @@
     LOG_ALWAYS_FATAL_IF(!dump, "null passed for dump pointer");
 
     const std::string package(packageChars.c_str(), packageChars.size());
-    GraphicsStatsService::addToDump(dump, path, package, versionCode, startTime, endTime, data);
+    GraphicsStatsService::addToDump(dump, path, package, versionCode, startTime, endTime,
+                                    reinterpret_cast<const ProfileData*>(buffer.get()));
 }
 
 static void addFileToDump(JNIEnv* env, jobject, jlong dumpPtr, jstring jpath) {
@@ -108,4 +106,4 @@
                                     sMethods, NELEM(sMethods));
 }
 
-} // namespace android
\ No newline at end of file
+} // namespace android
