]> granicus.if.org Git - imagemagick/commitdiff
(no commit message)
authorcristy <urban-warrior@git.imagemagick.org>
Mon, 7 Apr 2014 00:35:51 +0000 (00:35 +0000)
committercristy <urban-warrior@git.imagemagick.org>
Mon, 7 Apr 2014 00:35:51 +0000 (00:35 +0000)
MagickCore/effect.c

index 49b04ebd880cd4017f84ab55a789ea50e2b1f398..77cd4b927c2286aecbd94ac0dc3a64dc996d8cd4 100644 (file)
@@ -1295,42 +1295,43 @@ MagickExport Image *CannyEdgeImage(const Image *image,const double radius,
 #endif
   for (y=0; y < (ssize_t) edge_image->rows; y++)
   {
-    register Quantum
-      *restrict q;
-
     register ssize_t
       x;
 
     if (status == MagickFalse)
       continue;
-    q=GetCacheViewAuthenticPixels(edge_view,0,y,edge_image->columns,1,
-      exception);
-    if (q == (Quantum *) NULL)
-      {
-        status=MagickFalse;
-        continue;
-      }
     for (x=0; x < (ssize_t) edge_image->columns; x++)
     {
       CannyInfo
         pixel;
 
+      register Quantum
+        *restrict q;
+
       /*
         Edge if pixel gradient higher than upper threshold.
       */
       status=GetMatrixElement(pixel_cache,x,y,&pixel);
       if (status == MagickFalse)
         break;
+      q=GetCacheViewAuthenticPixels(edge_view,x,y,1,1,exception);
+      if (q == (PixelPacket *) NULL)
+        {
+          status=MagickFalse;
+          continue;
+        }
       if ((pixel.intensity >= upper_threshold) &&
           (GetPixelIntensity(edge_image,q) == 0))
         {
           *q=QuantumRange;
+          status=SyncCacheViewAuthenticPixels(edge_view,exception);
+          if (status == MagickFalse)
+            continue;
           status=TraceEdges(edge_image,trace_view,pixel_cache,x,y,
             lower_threshold,exception);
           if (status == MagickFalse)
-            break;
+            continue;
         }
-      q+=GetPixelChannels(edge_image);
     }
     if (SyncCacheViewAuthenticPixels(edge_view,exception) == MagickFalse)
       status=MagickFalse;