changeset 3424:78d0a8d449fd

7002627: JNI Critical Arrays should be released with the original (unmodified) pointer Reviewed-by: jgodinez, prr
author bae
date Thu, 23 Dec 2010 14:27:32 +0300
parents 1513ccf103a9
children 155d91257957
files src/share/native/sun/java2d/pipe/BufferedMaskBlit.c
diffstat 1 files changed, 3 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/src/share/native/sun/java2d/pipe/BufferedMaskBlit.c	Wed Dec 22 13:49:23 2010 -0800
+++ b/src/share/native/sun/java2d/pipe/BufferedMaskBlit.c	Thu Dec 23 14:27:32 2010 +0300
@@ -119,7 +119,8 @@
                 PtrCoord(srcInfo.rasBase,
                          srcInfo.bounds.x1, srcInfo.pixelStride,
                          srcInfo.bounds.y1, srcInfo.scanStride);
-            unsigned char *pMask =
+            unsigned char *pMask, *pMaskAlloc;
+            pMask = pMaskAlloc =
                 (*env)->GetPrimitiveArrayCritical(env, maskArray, 0);
             if (pMask == NULL) {
                 J2dRlsTraceLn(J2D_TRACE_ERROR,
@@ -274,7 +275,7 @@
             bpos += width * height * sizeof(jint);
 
             (*env)->ReleasePrimitiveArrayCritical(env, maskArray,
-                                                  pMask, JNI_ABORT);
+                                                  pMaskAlloc, JNI_ABORT);
         }
         SurfaceData_InvokeRelease(env, srcOps, &srcInfo);
     }