diff --git a/src/program.c b/src/program.c index 7d50189c4c787282fdb7f2a0b997d4912cd2cc80..796552bc744d9ce13dec1f062b5b43a45e20da18 100644 --- a/src/program.c +++ b/src/program.c @@ -5,7 +5,7 @@ \*/ /**/ #include "global.h" -RCSID("$Id: program.c,v 1.178 1999/12/07 09:41:01 hubbe Exp $"); +RCSID("$Id: program.c,v 1.179 1999/12/13 00:56:14 grubba Exp $"); #include "program.h" #include "object.h" #include "dynamic_buffer.h" @@ -3446,22 +3446,20 @@ void yywarning(char *fmt, ...) ATTRIBUTE((format(printf,1,2))) /* returns 1 if a implements b */ static int low_implements(struct program *a, struct program *b) { - int e,num=0; + int e; struct pike_string *s=findstring("__INIT"); for(e=0;e<b->num_identifier_references;e++) { struct identifier *bid=ID_FROM_INT(b,e); int i; - if(s==bid->name) continue; - i=find_shared_string_identifier(bid->name,a); - if(i!=-1) - { - if(!match_types(ID_FROM_INT(a,i)->type, bid->type)) - return 0; - num++; - } + if(s == bid->name) continue; /* Skip __INIT */ + i = find_shared_string_identifier(bid->name,a); + if (i == -1) return 0; + + if(!match_types(ID_FROM_INT(a,i)->type, bid->type)) + return 0; } - return num; + return 1; } #define IMPLEMENTS_CACHE_SIZE 4711