From 511a808cea9020a776749904feb21a2dd55ef7b4 Mon Sep 17 00:00:00 2001 From: Patrik Torstensson Date: Mon, 27 Mar 2017 15:04:11 +0100 Subject: [PATCH] SurfaceControl: Crash due to invalid JNI cast The (void*)buffer.get on ARM32 is 4 byte, so the calling convention will put the argument in [sp, #12]. However, the caller actually expects a long (the signature of gGraphicBufferClassInfo.builder), which means it will expect it to be in [sp, #16] Test: Tested on mtk device Fixes: 36631082 Fixes: 36974487 Change-Id: I0f723125e612d096c0d76ca3360d895f3f23f286 (cherry picked from commit 98dd5d9a85e8911cf41dea6198d4111f737a5892) --- core/jni/android_view_SurfaceControl.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/jni/android_view_SurfaceControl.cpp b/core/jni/android_view_SurfaceControl.cpp index e2443bba430a0..dc365b41d1193 100644 --- a/core/jni/android_view_SurfaceControl.cpp +++ b/core/jni/android_view_SurfaceControl.cpp @@ -167,7 +167,7 @@ static jobject nativeScreenshotToBuffer(JNIEnv* env, jclass clazz, buffer->getHeight(), buffer->getPixelFormat(), buffer->getUsage(), - (void*)buffer.get()); + (jlong)buffer.get()); } static jobject nativeScreenshotBitmap(JNIEnv* env, jclass clazz,