pike.git / src / pike_types.cmod

version» Context lines:

pike.git/src/pike_types.cmod:3105:    t = t2;    } else if (CDR_TO_INT(t1) < CDR_TO_INT(t2)) {    t = t1;    ret = -1;    } else {    t = t2;    ret = 1;    }    break;    case T_MAPPING: +  if (!t1->car) { +  t = t1; +  ret = -1; +  break; +  } +  if (!t2->car) { +  t = t2; +  ret = 1; +  break; +  }    if (t1->car->type < t2->car->type) {    t = t1;    ret = -1;    break;    }    if (t1->car->type > t2->car->type) {    t = t2;    ret = 1;    break;    } -  +  if (!t1->cdr) { +  t = t1; +  ret = -1; +  break; +  } +  if (!t2->cdr) { +  t = t2; +  ret = 1; +  break; +  }    if (t1->cdr->type < t2->cdr->type) {    t = t1;    ret = -1;    break;    }    if (t1->cdr->type > t2->cdr->type) {    t = t2;    ret = 1;    break;    }    t = t1;    ret = -1;    break;    case T_ARRAY: -  +  if (!t1->cdr) { +  if (!t2->cdr) { +  /* Probably not reached as t1 and t2 ought to be equal. */ +  t = t1; +  ret = 0; +  break; +  } +  t = t1; +  ret = -1; +  break; +  } +  if (!t2->cdr) { +  t = t2; +  ret = 1; +  break; +  }    if (t1->cdr->type < t2->cdr->type) {    t = t1;    ret = -1;    break;    } else if (t1->cdr->type > t2->cdr->type) {    t = t2;    ret = 1;    break;    }    if (t1 < t2) {    t = t1;    ret = -1;    } else {    t = t2;    ret = 1;    }    break;    case T_MULTISET: -  +  if (!t1->car) { +  if (!t2->car) { +  t = t1; +  ret = 0; +  break; +  } +  t = t1; +  ret = -1; +  break; +  } +  if (!t2->car) { +  t = t2; +  ret = 1; +  break; +  }    if (t1->car->type < t2->car->type) {    t = t1;    ret = -1;    break;    } else if (t1->car->type > t2->car->type) {    t = t2;    ret = 1;    break;    }    /* FALLTHRU */