pike.git / src / pike_types.cmod

version» Context lines:

pike.git/src/pike_types.cmod:8815:    b = b_markers[m];    } else {    b = mixed_type_string;    }    }    goto recurse;    }       case PIKE_T_OPERATOR:    { -  struct pike_type *t = b->car; -  if ((t->type >= '0') && (t->type <= '9')) { -  t = ((flags & LE_A_B_SWAPPED)?a_markers:b_markers)[t->type - '0']; -  /* if (!t) t = zero_type_string; */ +  struct pike_type *t1 = b->car; +  struct pike_type *t2 = b->cdr; +  if (t1 && (t1->type >= '0') && (t1->type <= '9')) { +  t1 = ((flags & LE_A_B_SWAPPED)?a_markers:b_markers)[t1->type - '0'];    } -  t = apply_type_operator(b->type, t, b->cdr); -  ret = low_pike_types_le(a, t, array_cnt, flags); -  free_type(t); +  if ((b->type & 0x8000) && t2 && (t2->type >= '0') && (t2->type <= '9')) { +  t2 = ((flags & LE_A_B_SWAPPED)?a_markers:b_markers)[t2->type - '0']; +  } +  t1 = apply_type_operator(b->type, t1, t2); +  if (!t1) return 0; +  ret = low_pike_types_le(a, t1, array_cnt, flags); +  free_type(t1);    return ret;    }       case PIKE_T_TRANSITIVE:    {    struct pike_type *t =    expand_transitive(b, ((flags & LE_A_B_SWAPPED)?a_markers:b_markers), 0);    ret = low_pike_types_le(a, t, array_cnt, flags);    free_type(t);    return ret;
pike.git/src/pike_types.cmod:9051:    a = a_markers[m];    } else {    a = mixed_type_string;    }    }    goto recurse;    }       case PIKE_T_OPERATOR:    { -  struct pike_type *t = a->car; -  if ((t->type >= '0') && (t->type <= '9')) { -  t = ((flags & LE_A_B_SWAPPED)?b_markers:a_markers)[t->type - '0']; -  /* if (!t) t = zero_type_string; */ +  struct pike_type *t1 = a->car; +  struct pike_type *t2 = a->cdr; +  if (t1 && (t1->type >= '0') && (t1->type <= '9')) { +  t1 = ((flags & LE_A_B_SWAPPED)?b_markers:a_markers)[t2->type - '0'];    } -  t = apply_type_operator(a->type, t, a->cdr); -  ret = low_pike_types_le(t, b, array_cnt, flags); -  free_type(t); +  if ((b->type & 0x8000) && t2 && (t2->type >= '0') && (t2->type <= '9')) { +  t2 = ((flags & LE_A_B_SWAPPED)?b_markers:a_markers)[t2->type - '0']; +  } +  t1 = apply_type_operator(a->type, t1, t2); +  if (!t1) return 0; +  ret = low_pike_types_le(t1, b, array_cnt, flags); +  free_type(t1);    return ret;    }       case PIKE_T_TRANSITIVE:    {    struct pike_type *t =    expand_transitive(a, ((flags & LE_A_B_SWAPPED)?b_markers:a_markers), 0);    ret = low_pike_types_le(t, b, array_cnt, flags);    free_type(t);    return ret;