pike.git / src / array.c

version» Context lines:

pike.git/src/array.c:955:    case T_MIXED:    for(e=0; e<v->size; e++) t |= 1 << ITEM(v)[e].type;    break;       case T_INT:    case T_FLOAT:    t=1 << v->array_type;    break;       default: -  v->type_field=1 << v->array_type; +  t=1 << v->array_type;    for(e=0; e<v->size; e++)    {    if(! SHORT_ITEM(v)[e].refs)    {    t |= 1 << T_INT;    break;    }    }       } -  + #ifdef DEBUG +  if(t & ~(v->type_field)) +  fatal("Type field out of order!\n"); + #endif    v->type_field = t;   }      /*    * Replace a large array with a small one if possible    */   struct array *compact_array(struct array *v)   {    INT32 e;    int type;
pike.git/src/array.c:1238:    {    assign_svalue_no_free(ITEM(ret)+e, ITEM(a)+*zipper);    }else{    assign_from_short_svalue_no_free(ITEM(ret)+e,    SHORT_ITEM(a)+*zipper,    a->array_type);    }    }else{    if(b->array_type == T_MIXED)    { -  assign_svalue(ITEM(ret)+e, ITEM(a)+*zipper); +  assign_svalue_no_free(ITEM(ret)+e, ITEM(b)+~*zipper);    }else{    assign_from_short_svalue_no_free(ITEM(ret)+e,    SHORT_ITEM(b)+~*zipper,    b->array_type);    }    }    zipper++;    }    }    ret->type_field = a->type_field | b->type_field;