diff --git a/core/jni/android_view_MotionEvent.cpp b/core/jni/android_view_MotionEvent.cpp index 9816d713c6dc2..15a91107cbb17 100644 --- a/core/jni/android_view_MotionEvent.cpp +++ b/core/jni/android_view_MotionEvent.cpp @@ -342,11 +342,11 @@ static jlong android_view_MotionEvent_nativeInitialize( return 0; } - MotionEvent* event; + std::unique_ptr event; if (nativePtr) { - event = reinterpret_cast(nativePtr); + event = std::unique_ptr(reinterpret_cast(nativePtr)); } else { - event = new MotionEvent(); + event = std::make_unique(); } PointerProperties pointerProperties[pointerCount]; @@ -355,7 +355,7 @@ static jlong android_view_MotionEvent_nativeInitialize( for (jint i = 0; i < pointerCount; i++) { jobject pointerPropertiesObj = env->GetObjectArrayElement(pointerPropertiesObjArray, i); if (!pointerPropertiesObj) { - goto Error; + return 0; } pointerPropertiesToNative(env, pointerPropertiesObj, &pointerProperties[i]); env->DeleteLocalRef(pointerPropertiesObj); @@ -363,7 +363,7 @@ static jlong android_view_MotionEvent_nativeInitialize( jobject pointerCoordsObj = env->GetObjectArrayElement(pointerCoordsObjArray, i); if (!pointerCoordsObj) { jniThrowNullPointerException(env, "pointerCoords"); - goto Error; + return 0; } pointerCoordsToNative(env, pointerCoordsObj, xOffset, yOffset, &rawPointerCoords[i]); env->DeleteLocalRef(pointerCoordsObj); @@ -377,13 +377,7 @@ static jlong android_view_MotionEvent_nativeInitialize( downTimeNanos, eventTimeNanos, pointerCount, pointerProperties, rawPointerCoords); - return reinterpret_cast(event); - -Error: - if (!nativePtr) { - delete event; - } - return 0; + return reinterpret_cast(event.release()); } static void android_view_MotionEvent_nativeDispose(JNIEnv* env, jclass clazz,