Index: trunk/psLib/src/imageops/psImagePixelExtract.c
===================================================================
--- trunk/psLib/src/imageops/psImagePixelExtract.c	(revision 21183)
+++ trunk/psLib/src/imageops/psImagePixelExtract.c	(revision 23989)
@@ -419,35 +419,40 @@
         }
 
-#define PSIMAGE_CUT_VERTICAL(TYPE) \
-    case PS_TYPE_##TYPE: { \
-            psVectorMaskType* maskVecData = NULL; \
-            for (psS32 c = col0; c < col1; c++) { \
-                ps##TYPE *imgData = input->data.TYPE[row0] + c; \
-                ps##TYPE *imgVecData = imgVec->data.TYPE; \
-                if (maskVec != NULL) { \
+#define PSIMAGE_CUT_VERTICAL(TYPE)					\
+	case PS_TYPE_##TYPE: {						\
+            psVectorMaskType* maskVecData = NULL;			\
+            for (psS32 c = col0; c < col1; c++) {			\
+                ps##TYPE *imgData = input->data.TYPE[row0] + c;		\
+                ps##TYPE *imgVecData = imgVec->data.TYPE;		\
+                if (maskVec != NULL) {					\
                     maskVecData = maskVec->data.PS_TYPE_VECTOR_MASK_DATA; \
                     maskData = &mask->data.PS_TYPE_IMAGE_MASK_DATA[row0][c]; /* XXX double check this... */ \
                     /** old entry: maskData = (psMaskType* )(mask->data.PS_TYPE_IMAGE_MASK_DATA[row0]) + c; */ \
-                } \
-                for (psS32 r = row0; r < row1; r++) { \
-                   *imgVecData = *imgData; \
-                    imgVecData ++; \
-                    imgData += inCols; \
-                    if (maskVecData != NULL) { \
-                        *maskVecData = (*maskData & maskVal); \
-                        maskVecData ++; \
-                        maskData += inCols; \
-                    } \
-                } \
-                psVectorStats(myStats, imgVec, NULL, maskVec, 0xff); \
-                *outData = psStatsGetValue(myStats, statistic); \
-                if (outPosition != NULL) { \
-                    outPosition->x = c; \
-                    outPosition->y = row0; \
-                    outPosition += delta; \
-                } \
-                outData += delta; \
-            } \
-            break; \
+                }							\
+                for (psS32 r = row0; r < row1; r++) {			\
+		    *imgVecData = *imgData;				\
+                    imgVecData ++;					\
+                    imgData += inCols;					\
+                    if (maskVecData != NULL) {				\
+                        *maskVecData = (*maskData & maskVal);		\
+                        maskVecData ++;					\
+                        maskData += inCols;				\
+                    }							\
+                }							\
+                if (!psVectorStats(myStats, imgVec, NULL, maskVec, 0xff)) { \
+		    psError(PS_ERR_UNKNOWN, false, "failure to measure stats"); \
+		    psFree(out);					\
+		    out = NULL;						\
+		    break;						\
+		}							\
+                *outData = psStatsGetValue(myStats, statistic);		\
+                if (outPosition != NULL) {				\
+                    outPosition->x = c;					\
+                    outPosition->y = row0;				\
+                    outPosition += delta;				\
+                }							\
+                outData += delta;					\
+            }								\
+            break;							\
         }
 
@@ -466,7 +471,5 @@
                 char* typeStr;
                 PS_TYPE_NAME(typeStr,type);
-                psError(PS_ERR_BAD_PARAMETER_TYPE, true,
-                        _("Specified psImage type, %s, is not supported."),
-                        typeStr);
+                psError(PS_ERR_BAD_PARAMETER_TYPE, true, _("Specified psImage type, %s, is not supported."), typeStr);
                 psFree(out);
                 out = NULL;
@@ -534,5 +537,10 @@
 	    }
 
-            psVectorStats(myStats, imgVec, NULL, maskVec, 0xff);
+            if (!psVectorStats(myStats, imgVec, NULL, maskVec, 0xff)) {
+		psError(PS_ERR_UNKNOWN, false, "failure to measure stats");
+		psFree (out);
+		out = NULL;
+		break;
+	    }
             *outData = psStatsGetValue(myStats, statistic);
             if (outPosition != NULL) {
@@ -933,5 +941,10 @@
 
     for (psS32 r = 0; r < numOut; r++) {
-        psVectorStats(myStats, buffer[r], NULL, bufferMask[r], 0xff);
+        if (!psVectorStats(myStats, buffer[r], NULL, bufferMask[r], 0xff)){
+	    psError(PS_ERR_UNKNOWN, false, "failure to measure stats");
+	    psFree(out);
+	    out = NULL;
+	    break;
+	}
         outData[r] = psStatsGetValue(myStats, statistic);
     }
