]> granicus.if.org Git - postgresql/commitdiff
Fix for text_lt/text_le to avoid warnings if not def USE_LOCALE.
authorVadim B. Mikheev <vadim4o@yahoo.com>
Mon, 21 Apr 1997 04:31:53 +0000 (04:31 +0000)
committerVadim B. Mikheev <vadim4o@yahoo.com>
Mon, 21 Apr 1997 04:31:53 +0000 (04:31 +0000)
src/backend/utils/adt/varlena.c

index 9c80ef69e6bf0d0015d664ffdd7807c9be927011..e5749cce0d05f901a0899f2dbabad6b53f2b6f45 100644 (file)
@@ -7,7 +7,7 @@
  *
  *
  * IDENTIFICATION
- *    $Header: /cvsroot/pgsql/src/backend/utils/adt/varlena.c,v 1.13 1997/04/09 08:29:35 scrappy Exp $
+ *    $Header: /cvsroot/pgsql/src/backend/utils/adt/varlena.c,v 1.14 1997/04/21 04:31:53 vadim Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -288,21 +288,19 @@ textne(struct varlena *arg1, struct varlena *arg2)
 /* text_lt()
  * Comparison function for text strings.
  * Includes locale support, but must copy strings to temporary memory
- *  to allow null-termination for inputs to strcoll().
- * XXX HACK code for textlen() indicates that there can be embedded nulls
- *  but it appears that most routines (incl. this one) assume not! - tgl 97/04/07
+ * to allow null-termination for inputs to strcoll().
  */
 bool
 text_lt(struct varlena *arg1, struct varlena *arg2) 
 {
-    bool result;
-
-    int cval;
     int len;
 #ifdef UNSIGNED_CHAR_TEXT
     unsigned
 #endif
     char *a1p, *a2p;
+#ifdef USE_LOCALE
+    int cval;
+#endif
     
     if (arg1 == NULL || arg2 == NULL)
        return((bool) FALSE);
@@ -310,11 +308,9 @@ text_lt(struct varlena *arg1, struct varlena *arg2)
     len = (((VARSIZE(arg1) <= VARSIZE(arg2))? VARSIZE(arg1): VARSIZE(arg2))-VARHDRSZ);
     
 #ifdef USE_LOCALE
-    if (!PointerIsValid(a1p = PALLOC(len+1))
-      || !PointerIsValid(a2p = PALLOC(len+1))) {
-       elog(WARN,"Unable to allocate memory for text comparison",NULL);
-       return(FALSE);
-    };
+
+    a1p = palloc (len+1);
+    a2p = palloc (len+1);
 
     memcpy(a1p, VARDATA(arg1), len);
     *(a1p+len) = '\0';
@@ -322,13 +318,15 @@ text_lt(struct varlena *arg1, struct varlena *arg2)
     *(a2p+len) = '\0';
 
     cval = strcoll(a1p,a2p);
-    result = ((cval < 0) || ((cval == 0) && (VARSIZE(arg1) < VARSIZE(arg2))));
+    
+    pfree (a1p);
+    pfree (a2p);
 
-    PFREE(a1p);
-    PFREE(a2p);
+    return((bool) ( (cval < 0) || 
+               ( (cval == 0) && (VARSIZE(arg1) < VARSIZE(arg2)) ) ) );
 
-    return(result);
 #else
+
     a1p = (unsigned char *)VARDATA(arg1);
     a2p = (unsigned char *)VARDATA(arg2);
     
@@ -338,27 +336,27 @@ text_lt(struct varlena *arg1, struct varlena *arg2)
        len--;
     };
     return((bool) (len? (*a1p < *a2p): (VARSIZE(arg1) < VARSIZE(arg2))));
+
 #endif
+
 } /* text_lt() */
 
 /* text_le()
  * Comparison function for text strings.
  * Includes locale support, but must copy strings to temporary memory
- *  to allow null-termination for inputs to strcoll().
- * XXX HACK code for textlen() indicates that there can be embedded nulls
- *  but it appears that most routines (incl. this one) assume not! - tgl 97/04/07
+ * to allow null-termination for inputs to strcoll().
  */
 bool
 text_le(struct varlena *arg1, struct varlena *arg2) 
 {
-    bool result;
-
-    int cval;
     int len;
 #ifdef UNSIGNED_CHAR_TEXT
     unsigned
 #endif
     char *a1p, *a2p;
+#ifdef USE_LOCALE
+    int cval;
+#endif
     
     if (arg1 == NULL || arg2 == NULL)
        return((bool) 0);
@@ -366,11 +364,9 @@ text_le(struct varlena *arg1, struct varlena *arg2)
     len = (((VARSIZE(arg1) <= VARSIZE(arg2))? VARSIZE(arg1): VARSIZE(arg2))-VARHDRSZ);
     
 #ifdef USE_LOCALE
-    if (!PointerIsValid(a1p = PALLOC(len+1))
-      || !PointerIsValid(a2p = PALLOC(len+1))) {
-       elog(WARN,"Unable to allocate memory for text comparison",NULL);
-       return(FALSE);
-    };
+
+    a1p = palloc (len+1);
+    a2p = palloc (len+1);
 
     memcpy(a1p, VARDATA(arg1), len);
     *(a1p+len) = '\0';
@@ -378,13 +374,15 @@ text_le(struct varlena *arg1, struct varlena *arg2)
     *(a2p+len) = '\0';
 
     cval = strcoll(a1p,a2p);
-    result = ((cval < 0) || ((cval == 0) && (VARSIZE(arg1) <= VARSIZE(arg2))));
+    
+    pfree (a1p);
+    pfree (a2p);
 
-    PFREE(a1p);
-    PFREE(a2p);
+    return ((bool) ( (cval < 0) || 
+               ( (cval == 0) && (VARSIZE(arg1) <= VARSIZE(arg2)) ) ) );
 
-    return(result);
 #else
+
     a1p = (unsigned char *)VARDATA(arg1);
     a2p = (unsigned char *)VARDATA(arg2);
     
@@ -395,7 +393,9 @@ text_le(struct varlena *arg1, struct varlena *arg2)
     };
 
     return((bool) (len? (*a1p <= *a2p): (VARSIZE(arg1) <= VARSIZE(arg2))));
+
 #endif
+
 } /* text_le() */
 
 bool