diff --git a/.gitattributes b/.gitattributes index c0bdd8e7919269ccfe6db4089b7647fb8d57a3cd..b088e7035685607b46b5e66e70cbd262492e5ac9 100644 --- a/.gitattributes +++ b/.gitattributes @@ -105,7 +105,6 @@ testfont binary /src/acconfig.h foreign_ident /src/aclocal.m4 foreign_ident /src/alloca.c foreign_ident -/src/array.c foreign_ident /src/array.h foreign_ident /src/backend.c foreign_ident /src/backend.h foreign_ident diff --git a/src/array.c b/src/array.c index 3bda19735a273dbd25dce0d860053ae2a51772df..a87674f99334225285e0dfcc8325ebb427c3c6c2 100644 --- a/src/array.c +++ b/src/array.c @@ -22,7 +22,7 @@ #include "security.h" #include "stuff.h" -RCSID("$Id: array.c,v 1.54 1999/09/16 23:56:08 hubbe Exp $"); +RCSID("$Id$"); struct array empty_array= { @@ -1385,7 +1385,7 @@ node *make_node_from_array(struct array *a) if(a->type_field == BIT_INT) { for(e=0; e<a->size; e++) - if(ITEM(a)[e].u.integer != 0) + if(ITEM(a)[e].u.integer || SUBTYPEOF(ITEM(a)[e])) break; if(e == a->size) { @@ -1399,9 +1399,11 @@ node *make_node_from_array(struct array *a) { case BIT_INT: for(e=1; e<a->size; e++) - if(ITEM(a)[e].u.integer != ITEM(a)[0].u.integer) + if((ITEM(a)[e].u.integer != ITEM(a)[0].u.integer) || + (SUBTYPEOF(ITEM(a)[e]) != SUBTYPEOF(ITEM(a)[0]))) { break; - if(e==a->size && ITEM(a)[0].u.integer==0) + } + if(e==a->size && ITEM(a)[0].u.integer==0 && !SUBTYPEOF(ITEM(a)[0])) return mkefuncallnode("allocate",mkintnode(a->size)); break;