]> git.sur5r.net Git - openldap/commitdiff
Import ITS#1261 fix from HEAD for modrdn abort
authorKurt Zeilenga <kurt@openldap.org>
Mon, 30 Jul 2001 18:46:29 +0000 (18:46 +0000)
committerKurt Zeilenga <kurt@openldap.org>
Mon, 30 Jul 2001 18:46:29 +0000 (18:46 +0000)
servers/slapd/back-ldbm/modrdn.c

index 249c7f94aa7428f18ffb12f11c8448aa9684944a..d8066cdaf21c73a99179c4d02b2b9cf627bced8f 100644 (file)
@@ -50,8 +50,11 @@ ldbm_back_modrdn(
        char            *new_dn = NULL, *new_ndn = NULL;
        Entry           *e, *p = NULL;
        Entry           *matched;
-       int                     rootlock = 0;
-       int                     rc = -1, rc_id = 0;
+       int             rootlock = 0;
+#define CAN_ROLLBACK   -1
+#define MUST_DESTROY   1
+       int             rc = CAN_ROLLBACK;
+       int             rc_id = 0;
        ID              id = NOID;
        const char *text = NULL;
        char textbuf[SLAP_TEXT_BUFLEN];
@@ -470,7 +473,7 @@ ldbm_back_modrdn(
            
            goto return_results;
        }
-       rc = -1;
+       rc = MUST_DESTROY;
        
        (void) cache_update_entry( &li->li_cache, e );
 
@@ -529,9 +532,10 @@ return_results:
 
        /* free entry and writer lock */
        cache_return_entry_w( &li->li_cache, e );
-       if ( rc ) {
-               /* if rc != 0 the entry is uncached and its private data 
-                * is destroyed; the entry must be freed */
+       if ( rc == MUST_DESTROY ) {
+               /* if rc == MUST_DESTROY the entry is uncached 
+                * and its private data is destroyed; 
+                * the entry must be freed */
                entry_free( e );
        }
        return( rc );