jdk/src/share/native/sun/awt/medialib/mlib_ImageConv_16ext.c
changeset 15628 228422512f97
parent 8939 04615dca2a76
child 15632 3d36eadad78f
--- a/jdk/src/share/native/sun/awt/medialib/mlib_ImageConv_16ext.c	Wed Feb 06 14:45:02 2013 -0800
+++ b/jdk/src/share/native/sun/awt/medialib/mlib_ImageConv_16ext.c	Fri Feb 08 11:25:42 2013 -0800
@@ -1886,6 +1886,8 @@
   d64_2x32 dd;
   GET_SRC_DST_PARAMETERS(DTYPE);
 
+  mlib_status status = MLIB_SUCCESS;
+
   if (scale > 30) {
     fscale *= 1.0/(1 << 30);
     scale -= 30;
@@ -1905,7 +1907,10 @@
     k[i] = kernel[i]*fscale;
   }
 
-  if (m == 1) return mlib_ImageConv1xN_ext(dst, src, k, n, dy_t, dy_b, cmask);
+  if (m == 1) {
+    status = mlib_ImageConv1xN_ext(dst, src, k, n, dy_t, dy_b, cmask);
+    FREE_AND_RETURN_STATUS;
+  }
 
   swid = wid + (m - 1);
 
@@ -1914,7 +1919,10 @@
   if ((bsize > BUFF_SIZE) || (n > MAX_N)) {
     pbuff = mlib_malloc(sizeof(FTYPE)*bsize + sizeof(FTYPE *)*2*(n + 1));
 
-    if (pbuff == NULL) return MLIB_FAILURE;
+    if (pbuff == NULL) {
+      status = MLIB_FAILURE;
+      FREE_AND_RETURN_STATUS;
+    }
     buffs = (FTYPE   **)(pbuff + bsize);
   }
 
@@ -2318,9 +2326,7 @@
     }
   }
 
-  if (pbuff != buff) mlib_free(pbuff);
-
-  return MLIB_SUCCESS;
+  FREE_AND_RETURN_STATUS;
 }
 
 /***************************************************************/