Branch: Tag:

2021-03-13

2021-03-13 11:28:24 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Improved handling of NULL in pike_types_le().

8582:    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++;    }
8592:    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--;    }
8633:    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;
8683:    /* 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;