From f5e1e642a964fc055b93e60948da66565ec5f094 Mon Sep 17 00:00:00 2001
From: "Mirar (Pontus Hagland)" <pike@sort.mirar.org>
Date: Mon, 24 May 1999 14:22:51 +0200
Subject: [PATCH] new getrgb function call bugfixes in change_color and
 paste_alpha_color (s/MAXIMUM/MINIMUM/ in code to skip wrongly assumed alpha
 channel)

Rev: src/modules/Image/blit.c:1.33
Rev: src/modules/Image/image.c:1.137
---
 src/modules/Image/blit.c  | 13 ++++++++-----
 src/modules/Image/image.c |  8 ++++----
 2 files changed, 12 insertions(+), 9 deletions(-)

diff --git a/src/modules/Image/blit.c b/src/modules/Image/blit.c
index 4531f0195e..dca2787f4f 100644
--- a/src/modules/Image/blit.c
+++ b/src/modules/Image/blit.c
@@ -1,10 +1,10 @@
-/* $Id: blit.c,v 1.32 1999/05/20 17:34:34 mirar Exp $ */
+/* $Id: blit.c,v 1.33 1999/05/24 12:22:51 mirar Exp $ */
 #include "global.h"
 
 /*
 **! module Image
 **! note
-**!	$Id: blit.c,v 1.32 1999/05/20 17:34:34 mirar Exp $
+**!	$Id: blit.c,v 1.33 1999/05/24 12:22:51 mirar Exp $
 **! class Image
 */
 
@@ -97,6 +97,9 @@ static INLINE int getrgb(struct image *img,
    img->rgb.r=(unsigned char)sp[-args+args_start].u.integer;
    img->rgb.g=(unsigned char)sp[1-args+args_start].u.integer;
    img->rgb.b=(unsigned char)sp[2-args+args_start].u.integer;
+
+fprintf(stderr,"args=%d args_start=%d diff=%d\n",
+	args,args_start,args-args_start);
    if (args-args_start>=4) 
       if (sp[3-args+args_start].type!=T_INT)
          error("Illegal alpha argument to %s\n",name);
@@ -562,14 +565,14 @@ void image_paste_alpha_color(INT32 args)
    if (!mask->img) return;
 
    if (args==6 || args==4 || args==2 || args==3) /* color at arg 2.. */
-      arg=1+getrgb(THIS,1,args,"image->paste_alpha_color()\n");
+      arg=1+getrgb(THIS,1,MINIMUM(args,4),"image->paste_alpha_color()\n");
    if (args>arg+1) 
    {
       if (sp[arg-args].type!=T_INT
-	  || sp[arg-args].type!=T_INT)
+	  || sp[1+arg-args].type!=T_INT)
          error("illegal coordinate arguments to image->paste_alpha_color()\n");
       x1=sp[arg-args].u.integer;
-      y1=sp[arg-args].u.integer;
+      y1=sp[1+arg-args].u.integer;
    }
    else x1=y1=0;
    
diff --git a/src/modules/Image/image.c b/src/modules/Image/image.c
index c8ad661283..805ebc6b15 100644
--- a/src/modules/Image/image.c
+++ b/src/modules/Image/image.c
@@ -1,9 +1,9 @@
-/* $Id: image.c,v 1.136 1999/05/23 17:46:41 mirar Exp $ */
+/* $Id: image.c,v 1.137 1999/05/24 12:22:49 mirar Exp $ */
 
 /*
 **! module Image
 **! note
-**!	$Id: image.c,v 1.136 1999/05/23 17:46:41 mirar Exp $
+**!	$Id: image.c,v 1.137 1999/05/24 12:22:49 mirar Exp $
 **! class Image
 **!
 **!	The main object of the <ref>Image</ref> module, this object
@@ -97,7 +97,7 @@
 
 #include "stralloc.h"
 #include "global.h"
-RCSID("$Id: image.c,v 1.136 1999/05/23 17:46:41 mirar Exp $");
+RCSID("$Id: image.c,v 1.137 1999/05/24 12:22:49 mirar Exp $");
 #include "pike_macros.h"
 #include "object.h"
 #include "constants.h"
@@ -796,7 +796,7 @@ static void image_change_color(INT32 args)
    if (!THIS->img) error("no image\n");
 
    to=THIS->rgb;   
-   if (!(arg=getrgb(THIS,0,MAXIMUM(args,3),"Image.Image->change_color()")))
+   if (!(arg=getrgb(THIS,0,MINIMUM(args,3),"Image.Image->change_color()")))
       error("too few arguments to Image.Image->change_color()\n");
    from=THIS->rgb;
    if (getrgb(THIS,arg,args,"Image.Image->change_color()"))
-- 
GitLab