]> git.sur5r.net Git - openldap/commitdiff
ITS#5898
authorQuanah Gibson-Mount <quanah@openldap.org>
Fri, 30 Jan 2009 20:10:13 +0000 (20:10 +0000)
committerQuanah Gibson-Mount <quanah@openldap.org>
Fri, 30 Jan 2009 20:10:13 +0000 (20:10 +0000)
CHANGES
servers/slapd/overlays/dynlist.c

diff --git a/CHANGES b/CHANGES
index 37facb64de94b7cc806d5c1ca35c6c6d46f906c3..5e3f098bd8c648f5217e3a36779b9b6c0da2c0a9 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -36,6 +36,7 @@ OpenLDAP 2.4.14 Engineering
        Fixed slapd-ldif numerous bugs (ITS#5408)
        Fixed slapd-ldif rename on same DN (ITS#5319)
        Fixed slapd-ldif deadlock (ITS#5329)
+       Fixed slapo-dynlist handling of flags (ITS#5898)
        Fixed slapo-memberof multiple instantiation (ITS#5903)
        Fixed slapd-meta double response sending (ITS#5854)
        Fixed slapd-meta alias deref for retry (ITS#5889)
index 655151a69a4f1d42118dce59c6bee6b7840270b5..1210b6582a61d67de7eac416cd27328711fe3854 100644 (file)
@@ -452,12 +452,13 @@ dynlist_prepare_entry( Operation *op, SlapReply *rs, dynlist_info_t *dli )
                o.o_groups = NULL;
        }
 
+       e_flags = rs->sr_flags;
        if ( !( rs->sr_flags & REP_ENTRY_MODIFIABLE ) ) {
                e = entry_dup( rs->sr_entry );
+               e_flags |= ( REP_ENTRY_MODIFIABLE | REP_ENTRY_MUSTBEFREED );
        } else {
                e = rs->sr_entry;
        }
-       e_flags = rs->sr_flags | ( REP_ENTRY_MODIFIABLE | REP_ENTRY_MUSTBEFREED );
 
        dlc.dlc_e = e;
        dlc.dlc_dli = dli;
@@ -855,6 +856,8 @@ done:;
 
                if ( r.sr_flags & REP_ENTRY_MUSTBEFREED ) {
                        entry_free( r.sr_entry );
+                       r.sr_entry = NULL;
+                       r.sr_flags ^= REP_ENTRY_MUSTBEFREED;
                }
        }