From c9fba686266ac9ffc0d5fe2c253f8af86b6ba069 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fredrik=20H=C3=BCbinette=20=28Hubbe=29?= <hubbe@hubbe.net> Date: Fri, 6 Jun 1997 18:16:26 -0700 Subject: [PATCH] two major bugfixes Rev: src/array.c:1.11 Rev: src/language.yacc:1.43 --- src/array.c | 21 ++++++++++++--------- src/language.yacc | 9 +++++++-- 2 files changed, 19 insertions(+), 11 deletions(-) diff --git a/src/array.c b/src/array.c index 756357d5f0..9fa73e4078 100644 --- a/src/array.c +++ b/src/array.c @@ -381,21 +381,24 @@ INT32 array_search(struct array *v, struct svalue *s,INT32 start) /* Why search for something that is not there? */ #ifdef DEBUG - if(d_flag > 1) array_check_type_field(v); + if(d_flag > 1) array_check_type_field(v); #endif - if(v->type_field & (1 << s->type)) { - TYPE_FIELD t=0; - for(e=start;e<v->size;e++) + if(start) { - if(is_eq(ITEM(v)+e,s)) return e; - t |= 1<<ITEM(v)[e].type; + for(e=start;e<v->size;e++) + if(is_eq(ITEM(v)+e,s)) return e; + }else{ + TYPE_FIELD t=0; + for(e=0;e<v->size;e++) + { + if(is_eq(ITEM(v)+e,s)) return e; + t |= 1<<ITEM(v)[e].type; + } + v->type_field=t; } - v->type_field=t; - return -1; } - return -1; } diff --git a/src/language.yacc b/src/language.yacc index 74aab449be..a9e7a33ba2 100644 --- a/src/language.yacc +++ b/src/language.yacc @@ -156,7 +156,7 @@ /* This is the grammar definition of Pike. */ #include "global.h" -RCSID("$Id: language.yacc,v 1.42 1997/05/07 06:25:35 per Exp $"); +RCSID("$Id: language.yacc,v 1.43 1997/06/07 01:16:26 hubbe Exp $"); #ifdef HAVE_MEMORY_H #include <memory.h> #endif @@ -1297,7 +1297,12 @@ typeof: F_TYPEOF '(' expr0 ')' { node *tmp; tmp=mknode(F_ARG_LIST,$3,0); - $$=mkstrnode(describe_type($3->type)); + if($3 && $3->type) + { + $$=mkstrnode(describe_type($3->type)); + }else{ + $$=mkstrnode(describe_type(mixed_type_string)); + } free_node(tmp); } ; -- GitLab