pike.git / src / pike_types.cmod

version» Context lines:

pike.git/src/pike_types.cmod:8575:    {    if((b=low_object_lfun_type(b, LFUN_CALL))) {    goto recurse;    }    return 1;    }       case TWOT(T_FUNCTION, T_ARRAY):    case TWOT(T_MANY, T_ARRAY):    { -  while (b->type == T_ARRAY) { +  while (b && (b->type == T_ARRAY)) {    b = b->cdr;    array_cnt++;    }    goto recurse;    }       case TWOT(T_ARRAY, T_FUNCTION):    case TWOT(T_ARRAY, T_MANY):    { -  while (a->type == T_ARRAY) { +  while (a && (a->type == T_ARRAY)) {    a = a->cdr;    array_cnt--;    }    goto recurse;    }       case TWOT(T_FUNCTION, T_FUNCTION):    case TWOT(T_FUNCTION, T_MANY):    case TWOT(T_MANY, T_FUNCTION):    /*
pike.git/src/pike_types.cmod:8626:    {    a = a->cdr;    }       b_tmp = b->car;    if (b->type == T_FUNCTION)    {    b = b->cdr;    }    -  if (a_tmp->type != T_VOID) { +  if (a_tmp && (a_tmp->type != T_VOID)) {    /* Note: flags never has grouping at this point. */    if (!low_pike_types_le(b_tmp, a_tmp, 0, flags ^ LE_A_B_SWAPPED)) {    return 0;    }    } else if (flags & LE_TYPE_SVALUE) {    /* Note: flags never has grouping at this point. */    if (!low_pike_types_le(b_tmp, zero_type_string, 0,    flags ^ LE_A_B_SWAPPED)) {    return 0;    }
pike.git/src/pike_types.cmod:8676:    }    }    }       a = a->cdr;    b = b->cdr;       /* check the returntype */    if (flags & LE_TYPE_SVALUE) return 1;    /* FIXME: Check array_cnt */ -  if ((b->type != T_VOID) && (a->type != T_VOID)) { +  if (a && b && (b->type != T_VOID) && (a->type != T_VOID)) {    if(!low_pike_types_le(a, b, array_cnt, flags)) return 0;    }    return 1;    }       if(a->type != b->type) return 0;       if (array_cnt) return 0;       switch(a->type)