clamp mask resolution, the occasional crash would happen failing to alloc when adding...
authorCampbell Barton <ideasman42@gmail.com>
Fri, 27 Jul 2012 11:05:08 +0000 (11:05 +0000)
committerCampbell Barton <ideasman42@gmail.com>
Fri, 27 Jul 2012 11:05:08 +0000 (11:05 +0000)
source/blender/blenkernel/BKE_mask.h
source/blender/blenkernel/intern/mask.c

index 76b6d25ceedd01ad30aee0cf1be8b1bce57655ee..a20bd9c20621f2c6f781428a9991b80c44a94917 100644 (file)
@@ -214,6 +214,8 @@ void BKE_mask_init_layers(Mask *mask, struct layer_init_data *mlayer_data, int w
 #define MASKPOINT_SEL_HANDLE(p)     { (p)->bezt.f1 |=  SELECT; (p)->bezt.f3 |=  SELECT; } (void)0
 #define MASKPOINT_DESEL_HANDLE(p)   { (p)->bezt.f1 &= ~SELECT; (p)->bezt.f3 &= ~SELECT; } (void)0
 
+#define MASK_RESOL_MAX 128
+
 /* disable to test alternate rasterizer */
 /* #define USE_RASKTER */
 
index 3c008692cbbd04bbe535dd99f5657201f097024f..df38cc9571f1b562a64739a5b991cbfde1b925dc 100644 (file)
@@ -301,6 +301,12 @@ int BKE_mask_spline_resolution(MaskSpline *spline, int width, int height)
                resol = MAX2(resol, cur_resol);
        }
 
+       BLI_assert(resol > 0);
+
+       if (resol > MASK_RESOL_MAX) {
+               resol = MASK_RESOL_MAX;
+       }
+
        return resol;
 }
 
@@ -331,6 +337,12 @@ int BKE_mask_spline_feather_resolution(MaskSpline *spline, int width, int height
 
        resol += max_jump / max_segment;
 
+       BLI_assert(resol > 0);
+
+       if (resol > MASK_RESOL_MAX) {
+               resol = MASK_RESOL_MAX;
+       }
+
        return resol;
 }