pike.git / src / pike_types.cmod

version» Context lines:

pike.git/src/pike_types.cmod:11616:   #ifdef PIKE_DEBUG    if (l_flag>2) {    fprintf(stderr, " Getting return type for ");    simple_describe_type(fun_type);    fprintf(stderr, "... ");    }   #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++; -  +  if (!fun_type->cdr) break;    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 PIKE_T_SCOPE:    case T_ASSIGN:    case PIKE_T_NAME:    fun_type = fun_type->cdr;    goto loop;       case PIKE_T_ATTRIBUTE:    tmp = new_get_return_type(fun_type->cdr, flags);    if (!tmp) break;    if (c) {
pike.git/src/pike_types.cmod:11737:    fun_type = low_object_lfun_type(fun_type, LFUN_CALL);    if (fun_type) goto loop;    /* FIXME: Multiple cases:    * Untyped object.    * Failed to lookup program id.    * Program does not have the lfun `()().    */       /* FALLTHRU */    case PIKE_T_MIXED: +  case PIKE_T_UNKNOWN:    copy_pike_type(res, mixed_type_string);    break;       case PIKE_T_FUNCTION:    do {    if (!match_types(fun_type->car, void_type_string)) {    /* Too few arguments. */    break;    }    fun_type = fun_type->cdr;