pike.git / src / pike_types.cmod

version» Context lines:

pike.git/src/pike_types.cmod:4871:    * of the T_OR node.    *    * FIXME: It is theoretically possible to propagate marker    * changes up if they are compatible in both branches.    */    orig_markers = remap->markers;    remap->markers = copy_mapping(orig_markers);    }       tmp = low_type_binop(op, a, b->car, remap, aflags, bflags, remap_flags); -  if ((remap_flags & PT_FLAG_REMAP_INEXACT) && tmp) { -  if (op == PT_BINOP_AND) { +  if (remap_flags & PT_FLAG_REMAP_INEXACT) { +  if (tmp && (op == PT_BINOP_AND)) {    if (remap) {    do_free_mapping(remap->markers);    remap->markers = orig_markers;    }    free_type(tmp);    add_ref(a);    return a; -  +  } else if (!tmp && (op == PT_BINOP_MINUS)) { +  if (remap) { +  do_free_mapping(remap->markers); +  remap->markers = orig_markers;    } -  +  return NULL;    } -  +  }    if (remap) {    do_free_mapping(remap->markers);    remap->markers = copy_mapping(orig_markers);    }    if ((op == PT_BINOP_MINUS) || (op == PT_BINOP_OR)) {    /* Special case to avoid excessively complicated expressions    * in the result.    *    * A - (B | C) == (A - B) - C    * rather than