From 69a94394f9e2465aaa268b236f202da57fae888a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Henrik=20Grubbstr=C3=B6m=20=28Grubba=29?= <grubba@grubba.org> Date: Tue, 21 Dec 1999 18:19:55 +0100 Subject: [PATCH] Fixed bug in T_VOID handling in pike_types_le(). Improved T_NOT handling in pike_types_le()? Rev: src/pike_types.c:1.108 --- src/pike_types.c | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/src/pike_types.c b/src/pike_types.c index cdd9edd176..fb8489d7da 100644 --- a/src/pike_types.c +++ b/src/pike_types.c @@ -5,7 +5,7 @@ \*/ /**/ #include "global.h" -RCSID("$Id: pike_types.c,v 1.107 1999/12/19 18:42:55 grubba Exp $"); +RCSID("$Id: pike_types.c,v 1.108 1999/12/21 17:19:55 grubba Exp $"); #include <ctype.h> #include "svalue.h" #include "pike_types.h" @@ -2061,11 +2061,14 @@ static int low_pike_types_le2(char *a, char *b, int array_cnt) if (EXTRACT_UCHAR(b) == T_NOT) { return low_pike_types_le(b+1, a+1, -array_cnt); } + if (EXTRACT_UCHAR(a+1) == T_NOT) { + return low_pike_types_le(a+2, b, array_cnt); + } if (low_pike_types_le(a+1, b, array_cnt)) { return 0; } /* FIXME: This is wrong... */ - return low_pike_types_le(b, a+1, -array_cnt); + return !low_pike_types_le(b, a+1, -array_cnt); case T_ASSIGN: ret=low_pike_types_le(a+2, b, array_cnt); @@ -2133,11 +2136,14 @@ static int low_pike_types_le2(char *a, char *b, int array_cnt) return low_pike_types_le(a, b, array_cnt); case T_NOT: + if (EXTRACT_UCHAR(b+1) == T_NOT) { + return low_pike_types_le(a, b+2, array_cnt); + } if (low_pike_types_le(a, b+1, array_cnt)) { return 0; } /* FIXME: This is wrong... */ - return low_pike_types_le(b+1, a, -array_cnt); + return !low_pike_types_le(b+1, a, -array_cnt); case T_ASSIGN: ret=low_pike_types_le(a, b+2, array_cnt); @@ -2335,7 +2341,7 @@ static int low_pike_types_le2(char *a, char *b, int array_cnt) /* check the 'many' type */ a++; b++; - if (EXTRACT_UCHAR(a) != T_VOID) { + if ((EXTRACT_UCHAR(a) != T_VOID) && (EXTRACT_UCHAR(b) != T_VOID)) { if (!low_pike_types_le(b, a, 0)) return 0; } -- GitLab