Delete local reference in toStringArray() error paths

Bug: 151443957
Test: Treehugger
Change-Id: I3b6324c92ef80be085f1d31abf84299d6e6eb228
diff --git a/include/nativehelper/toStringArray.h b/include/nativehelper/toStringArray.h
index 8d25974..0ff45ec 100644
--- a/include/nativehelper/toStringArray.h
+++ b/include/nativehelper/toStringArray.h
@@ -26,7 +26,8 @@
 
 template <typename StringVisitor>
 jobjectArray toStringArray(JNIEnv* env, size_t count, StringVisitor&& visitor) {
-    jobjectArray result = jniCreateStringArray(static_cast<C_JNIEnv*>(&env->functions), count);
+    C_JNIEnv* c_env = static_cast<C_JNIEnv*>(&env->functions);
+    ScopedLocalRef<jobjectArray> result(env, jniCreateStringArray(c_env, count));
     if (result == nullptr) {
         return nullptr;
     }
@@ -35,12 +36,12 @@
         if (env->ExceptionCheck()) {
             return nullptr;
         }
-        env->SetObjectArrayElement(result, i, s.get());
+        env->SetObjectArrayElement(result.get(), i, s.get());
         if (env->ExceptionCheck()) {
             return nullptr;
         }
     }
-    return result;
+    return result.release();
 }
 
 inline jobjectArray toStringArray(JNIEnv* env, const std::vector<std::string>& strings) {