diff -cr cvs/pgsql/src/backend/utils/adt/varlena.c cvswork/pgsql/src/backend/utils/adt/varlena.c *** cvs/pgsql/src/backend/utils/adt/varlena.c Mon Dec 14 07:01:37 1998 --- cvswork/pgsql/src/backend/utils/adt/varlena.c Sun Jan 31 16:32:52 1999 *************** *** 496,528 **** varstr_cmp(char *arg1, int len1, char *arg2, int len2) { int result; ! char *a1p, ! *a2p; ! #ifdef USE_LOCALE ! a1p = (unsigned char *) palloc(len1 + 1); ! a2p = (unsigned char *) palloc(len2 + 1); ! ! memcpy(a1p, arg1, len1); ! *(a1p + len1) = '\0'; ! memcpy(a2p, arg2, len2); ! *(a2p + len2) = '\0'; ! ! result = strcoll(a1p, a2p); ! ! pfree(a1p); ! pfree(a2p); ! ! #else ! ! a1p = arg1; ! a2p = arg2; ! ! result = strncmp(a1p, a2p, Min(len1, len2)); ! if ((result == 0) && (len1 != len2)) ! result = (len1 < len2) ? -1 : 1; #endif ! return result; } /* varstr_cmp() */ --- 496,524 ---- varstr_cmp(char *arg1, int len1, char *arg2, int len2) { int result; ! char *a1p, *a2p; #ifdef USE_LOCALE ! if ((int)arg2[len2 - 1] != -1) ! { ! a1p = (unsigned char *) palloc(len1 + 1); ! a2p = (unsigned char *) palloc(len2 + 1); ! memcpy(a1p, arg1, len1); ! *(a1p + len1) = '\0'; ! memcpy(a2p, arg2, len2); ! *(a2p + len2) = '\0'; ! result = strcoll(a1p, a2p); ! pfree(a1p); ! pfree(a2p); ! } ! else #endif ! { ! a1p = arg1; ! a2p = arg2; ! result = strncmp(a1p, a2p, Min(len1, len2)); ! if ((result == 0) && (len1 != len2)) ! result = (len1 < len2) ? -1 : 1; ! } return result; } /* varstr_cmp() */