pike.git / src / mapping.c

version» Context lines:

pike.git/src/mapping.c:685:    RELOC(keypairs[e].next);    add_ref_svalue(& keypairs[e].ind);    add_ref_svalue(& keypairs[e].val);    }   #endif /* PIKE_MAPPING_KEYPAIR_LOOP */       nmd->refs=0;    add_ref(nmd); /* For DMALLOC... */    nmd->valrefs=0;    nmd->hardlinks=0; +  nmd->ind_types = md->ind_types; +  nmd->val_types = md->val_types;       /* FIXME: What about nmd->flags? */       if(md->hardlinks)    {   #ifdef PIKE_DEBUG    if(md->refs <= 0 || md->valrefs<=0)    Pike_fatal("Hardlink without refs/valrefs!\n");   #endif    md->hardlinks--;
pike.git/src/mapping.c:1178:       mark_free_svalue (&md->free_list->ind);    mark_free_svalue (&md->free_list->val);       md->size--;   #ifdef MAPPING_SIZE_DEBUG    if(m->data ==md)    m->debug_size--;   #endif    +  if (UNLIKELY(!md->size)) { +  md->ind_types = md->val_types = 0; +  } +     if (!(md->flags & MAPPING_FLAG_NO_SHRINK)) {    if((MAP_SLOTS(md->size) < md->hashsize * MIN_LINK_LENGTH) &&    (md->hashsize > AVG_LINK_LENGTH)) {    debug_malloc_touch(m);    rehash(m, MAP_SLOTS(m->data->size));    }    }      #ifdef PIKE_DEBUG    if(d_flag>1) check_mapping(m);