]> git.sur5r.net Git - openldap/blobdiff - libraries/libldap/sort.c
rename ldap_pvt_init_utils() to ldap_int_utils_init() and provide
[openldap] / libraries / libldap / sort.c
index 6738fba022c48b576fccddff005b9e2f0c544fdb..36570bb1331c7ad6c9931f10e7162012a318b2a3 100644 (file)
@@ -1,4 +1,8 @@
 /*
+ * Copyright 1998-1999 The OpenLDAP Foundation, All Rights Reserved.
+ * COPYING RESTRICTIONS APPLY, see COPYRIGHT file
+ */
+/* Portions
  * Copyright (c) 1994 Regents of the University of Michigan.
  * All rights reserved.
  *
@@ -76,8 +80,8 @@ int
 ldap_sort_entries(
     LDAP       *ld,
     LDAPMessage        **chain,
-    char       *attr,          /* NULL => sort by DN */
-    int                (*cmp) (const char *, const char *)
+    LDAP_CONST char    *attr,          /* NULL => sort by DN */
+    int                (*cmp) (LDAP_CONST  char *, LDAP_CONST char *)
 )
 {
        int                     i, count;
@@ -87,6 +91,18 @@ ldap_sort_entries(
 
        count = ldap_count_entries( ld, *chain );
 
+
+       if ( count < 0 ) {
+               if( ld != NULL ) {
+                       ld->ld_errno = LDAP_PARAM_ERROR;
+               }
+               return -1;
+
+       } else if ( count < 2 ) {
+               /* zero or one entries -- already sorted! */
+               return 0;
+       }
+
        if ( (et = (struct entrything *) malloc( count *
            sizeof(struct entrything) )) == NULL ) {
                ld->ld_errno = LDAP_NO_MEMORY;