pike.git / src / array.c

version» Context lines:

pike.git/src/array.c:1528:    {    v->type_field=BIT_MIXED|BIT_UNFINISHED;    return BIT_MIXED|BIT_UNFINISHED;    }       t=0;       for(e=0; e<v->size; e++) {    check_svalue (ITEM(v) + e);    t |= BITOF(ITEM(v)[e]); -  if (!(t & BIT_INT) && (TYPEOF(ITEM(v)[e]) == PIKE_T_OBJECT) && -  (ITEM(v)[e].u.object->prog == bignum_program)) { -  /* Lie, and claim that the array contains integers too. */ +  if (!(t & BIT_INT) && +  (((TYPEOF(ITEM(v)[e]) == PIKE_T_OBJECT) && +  ((ITEM(v)[e].u.object->prog == bignum_program) || +  !ITEM(v)[e].u.object->prog)) || +  ((TYPEOF(ITEM(v)[e]) == PIKE_T_FUNCTION) && +  (SUBTYPEOF(ITEM(v)[e]) != FUNCTION_BUILTIN) && +  !ITEM(v)[e].u.object->prog))) { +  /* +  * Bignum or destructed object or destructed function. +  * +  * Lie, and claim that the array contains integers too. +  */    t |= BIT_INT; -  + #ifdef PIKE_DEBUG +  v->type_field |= BIT_INT; + #endif    }    }      #ifdef PIKE_DEBUG    if(t & ~(v->type_field))    {    describe(v);    Pike_fatal("Type field out of order (old:0x%04x new:0x%04x)!\n",    v->type_field, t);    }