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