]> git.imager.perl.org - imager.git/blobdiff - map.c
1.012 release
[imager.git] / map.c
diff --git a/map.c b/map.c
index 0431367f5b0613e85de9433162e70072aeb60f64..9ddc62f855ebce456f7dc1588320b340cd1681f1 100644 (file)
--- a/map.c
+++ b/map.c
@@ -45,21 +45,26 @@ i_map(i_img *im, unsigned char (*maps)[256], unsigned int mask) {
 
   if (!mask) return; /* nothing to do here */
 
-  for(i=0; i<im->channels; i++)
+  for(i=0; i<im->channels; i++) {
     if (mask & (1<<i)) {
       if (minset == -1) minset = i;
       maxset = i;
     }
+  }
 
   mm_log((1, "minset=%d maxset=%d\n", minset, maxset));
 
+  if (minset == -1)
+    return;
+
   vals = mymalloc(sizeof(i_color) * im->xsize);
 
   for (y = 0; y < im->ysize; ++y) {
     i_glin(im, 0, im->xsize, y, vals);
     for (x = 0; x < im->xsize; ++x) {
       for(ch = minset; ch<=maxset; ch++) {
-       if (!maps[ch]) continue;
+       if (!(mask & (1 << ch)))
+         continue;
        vals[x].channel[ch] = maps[ch][vals[x].channel[ch]];
       }
     }