pike.git / src / pike_types.cmod

version» Context lines:

pike.git/src/pike_types.cmod:10983:    fprintf(stderr, "%*slower_new_check_call(", indent*2, "");    simple_describe_type(fun_type);    fprintf(stderr, ", ");    simple_describe_type(arg_type);    fprintf(stderr, ", 0x%04x, %p)...\n", flags, sval);    }   #endif /* PIKE_DEBUG */       loop:    /* Count the number of array levels. */ -  while(fun_type->type == PIKE_T_ARRAY) { +  while(fun_type && (fun_type->type == PIKE_T_ARRAY)) {    array_cnt++;    fun_type = fun_type->cdr;    }    -  switch(fun_type->type & PIKE_T_MASK) { +  switch(fun_type?(fun_type->type & PIKE_T_MASK):PIKE_T_UNKNOWN) {    case T_SCOPE:    /* FIXME: Save and restore the corresponding marker set. */    case T_ASSIGN:    case PIKE_T_NAME:    fun_type = fun_type->cdr;    goto loop;       case PIKE_T_ATTRIBUTE:    res = lower_new_check_call(fun_type->cdr, arg_type, flags, sval CHECK_CALL_ARGS);    if (!res) return NULL;
pike.git/src/pike_types.cmod:11060:    type_stack_mark();    push_finished_type(tmp);    push_finished_type(res);    push_type(T_AND);    free_type(tmp);    free_type(res);    res = pop_unfinished_type();    break;       case T_NOT: -  if (arg_type->type == T_NOT) { +  if (arg_type && (arg_type->type == T_NOT)) {    /* Both sides are inverted. Pop both inversions. */    arg_type = arg_type->car;    fun_type = fun_type->car;    flags ^= CALL_INVERTED_TYPES;    goto loop;    } else {    /* Move the inversion to the argument type. */    type_stack_mark();    push_finished_type(arg_type);    push_type(T_NOT);