--- a/jdk/src/share/native/sun/awt/medialib/mlib_ImageConv_8ext.c Wed Feb 06 14:45:02 2013 -0800
+++ b/jdk/src/share/native/sun/awt/medialib/mlib_ImageConv_8ext.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;
}
/***************************************************************/