diff --git a/src/mapping.c b/src/mapping.c index 0a83b30235e086080be6ceede5c6a21504ee5428..36506b3a1fc3d265bb8bdcd5222ca7a3beb673ab 100644 --- a/src/mapping.c +++ b/src/mapping.c @@ -4,7 +4,7 @@ ||| See the files COPYING and DISCLAIMER for more information. \*/ #include "global.h" -RCSID("$Id: mapping.c,v 1.33 1998/05/14 21:45:21 hubbe Exp $"); +RCSID("$Id: mapping.c,v 1.34 1998/05/16 08:21:47 hubbe Exp $"); #include "main.h" #include "object.h" #include "mapping.h" @@ -936,6 +936,9 @@ void mapping_search_no_free(struct svalue *to, void check_mapping(struct mapping *m) { + int e,num; + struct keypair *k; + if(m->refs <=0) fatal("Mapping has zero refs.\n"); @@ -965,7 +968,22 @@ void check_mapping(struct mapping *m) if(!m->hash && m->size) fatal("Hey! where did my hashtable go??\n"); + + num=0; + MAPPING_LOOP(m) + { + num++; + + if(! ( (1 << k->ind.type) & (m->ind_types) )) + fatal("Mapping indices type field lies.\n"); + + if(! ( (1 << k->val.type) & (m->val_types) )) + fatal("Mapping values type field lies.\n"); + + } + if(m->size != num) + fatal("Shields are failing, hull integrity down to 20%%\n"); } void check_all_mappings(void)