Sisyphus repositório
Última atualização: 1 outubro 2023 | SRPMs: 18631 | Visitas: 37778686
en ru br
ALT Linux repositórios
S:3.1.1-alt5
5.0: 2.7.11-alt1
4.1: 2.7.11-alt1
4.0: 2.7.11-alt0.M40.1

Group :: Gráficos
RPM: flam3

 Main   Changelog   Spec   Patches   Sources   Download   Gear   Bugs e FR  Repocop 

Patch: flam3-3.1.1-alt-004-flam3.patch
Download


Description: Fix rendering bugs in flam3.c
 Fix smooth interpolation issue (mfeemster)
   https://github.com/scottdraves/flam3/issues/13
 Fix fusing flame iteration (roever)
   https://github.com/scottdraves/flam3/issues/15
 Fix buffer overflows, (ministr too small) 
Author: Peter Blackman <peter@pblackman.plus.com>
Last-Update: 2020-01-20
Index: b/flam3.c
===================================================================
--- a/flam3.c
+++ b/flam3.c
@@ -255,19 +255,25 @@
          fn = xform_distrib[ ((unsigned)irand(rc)) & CHOOSE_XFORM_GRAIN_M1 ];
       
       if (apply_xform(cp, fn, p, q, rc)>0) {
-         consec ++;
+//	     roever's patch
+         consec =0;
          badvals ++;
-         if (consec<5) {
-            p[0] = q[0];
-            p[1] = q[1];
-            p[2] = q[2];
-            p[3] = q[3];
-            i -= 4;
-            continue;
-         } else
-            consec = 0;
-      } else
-         consec = 0;
+         p[0] = q[0];
+         p[1] = q[1];
+         p[2] = q[2];
+         p[3] = q[3];
+         i -= 4;
+         continue;
+      }
+      else if (consec < fuse) {
+          consec++;
+          p[0] = q[0];
+          p[1] = q[1];
+          p[2] = q[2];
+          p[3] = q[3];
+          i -= 4;
+          continue;
+      }
 
       /* Store the last used transform */
       lastxf = fn+1;
@@ -753,23 +759,26 @@
        flam3_align(&cpi[0], &cps[i1], 2);
        smoothflag = 0;
      
-   } else {
+   }
+   else {
+   /* mfeemster's patch */
        if (0 == i1) {
           fprintf(stderr, "error: cannot use smooth interpolation on first segment.\n");
           fprintf(stderr, "reverting to linear interpolation.\n");
           flam3_align(&cpi[0], &cps[i1], 2);
           smoothflag = 0;
        }
-
+	   else
        if (ncps-1 == i2) {
           fprintf(stderr, "error: cannot use smooth interpolation on last segment.\n");
           fprintf(stderr, "reverting to linear interpolation.\n");
           flam3_align(&cpi[0], &cps[i1], 2);
           smoothflag = 0;
        }
-
+	   else {
        flam3_align(&cpi[0], &cps[i1-1], 4);
        smoothflag = 1;
+	   }
    }
    
    /* Clear the destination cp */
@@ -2659,7 +2668,7 @@
 void flam3_cross(flam3_genome *cp0, flam3_genome *cp1, flam3_genome *out, int cross_mode, randctx *rc, char *action) {
 
    int i,j, rb;
-   char ministr[10];   
+   char ministr[12];
 
    if (cross_mode == CROSS_NOT_SPECIFIED) {
    
 
projeto & código: Vladimir Lettiev aka crux © 2004-2005, Andrew Avramenko aka liks © 2007-2008
mantenedor atual: Michael Shigorin
mantenedor da tradução: Fernando Martini aka fmartini © 2009