From e375a11c79dfb2d05401eebeec8285ae42671c79 Mon Sep 17 00:00:00 2001
From: Per Hedbor <ph@opera.com>
Date: Mon, 1 Sep 1997 16:16:12 +0200
Subject: [PATCH] Threaded a few functions, fixed severe bug where sp[whatever]
 was accessed inside a THREADS_ALLOW(); ... block.

Rev: src/modules/Image/image.c:1.37
---
 src/modules/Image/image.c | 21 +++++++++++----------
 1 file changed, 11 insertions(+), 10 deletions(-)

diff --git a/src/modules/Image/image.c b/src/modules/Image/image.c
index 77adad53e1..c63ec02505 100644
--- a/src/modules/Image/image.c
+++ b/src/modules/Image/image.c
@@ -1,4 +1,4 @@
-/* $Id: image.c,v 1.36 1997/08/30 18:36:07 grubba Exp $ */
+/* $Id: image.c,v 1.37 1997/09/01 14:16:12 per Exp $ */
 
 /*
 **! module Image
@@ -6,7 +6,7 @@
 **!     This module adds image-drawing and -manipulating
 **!	capabilities to pike. 
 **! note
-**!	$Id: image.c,v 1.36 1997/08/30 18:36:07 grubba Exp $<br>
+**!	$Id: image.c,v 1.37 1997/09/01 14:16:12 per Exp $<br>
 **! see also: Image.font, Image.image
 **!
 **! class image
@@ -107,7 +107,7 @@
 
 #include "stralloc.h"
 #include "global.h"
-RCSID("$Id: image.c,v 1.36 1997/08/30 18:36:07 grubba Exp $");
+RCSID("$Id: image.c,v 1.37 1997/09/01 14:16:12 per Exp $");
 #include "pike_macros.h"
 #include "object.h"
 #include "constants.h"
@@ -379,9 +379,11 @@ THREADS_ALLOW();
    ey=height-by;
    
    d=malloc(sizeof(rgb_group)*img->xsize*img->ysize +1);
+THREADS_DISALLOW();
 
    if(!d) error("Out of memory.\n");
    
+THREADS_ALLOW();
 CHRONO("apply_matrix, one");
 
    for (y=by; y<img->ysize-ey; y++)
@@ -1843,9 +1845,11 @@ void image_distancesq(INT32 args)
    i=img->xsize*img->ysize;
    while (i--)
    {
+     int dist;
 #define DISTANCE(A,B) \
-   (sq((long)(A).r-(B).r)+sq((long)(A).g-(B).g)+sq((long)(A).b-(B).b))
-      d->r=d->g=d->b=testrange(DISTANCE(*s,rgb)>>8);
+     (sq((long)(A).r-(B).r)+sq((long)(A).g-(B).g)+sq((long)(A).b-(B).b))
+      dist = DISTANCE(*s,rgb)>>8;
+      d->r=d->g=d->b=testrange(dist);
       d++; s++;
    }
    THREADS_DISALLOW();
@@ -2401,11 +2405,8 @@ void image_modify_by_intensity(INT32 args)
    THREADS_ALLOW();
    while (x--)
    {
-      i= testrange( ((((long)s->r)*rgb.r+
-		      ((long)s->g)*rgb.g+
-		      ((long)s->b)*rgb.b)/div) );
-      *d=list[i];
-      d++;
+      int q = ((((int)s->r)*rgb.r+((int)s->g)*rgb.g+((int)s->b)*rgb.b)/div);
+      *(d++)=list[testrange( q )];
       s++;
    }
    THREADS_DISALLOW();
-- 
GitLab