]> git.sur5r.net Git - openldap/commitdiff
Fix prev commit for test037
authorHoward Chu <hyc@openldap.org>
Fri, 14 Oct 2005 00:05:43 +0000 (00:05 +0000)
committerHoward Chu <hyc@openldap.org>
Fri, 14 Oct 2005 00:05:43 +0000 (00:05 +0000)
servers/slapd/modify.c

index 4473e1b7dac665308372ab4ab58cfab0a5e9a593..b07c6c38c95475183ce0cd2bcf7829148c903cfd 100644 (file)
@@ -818,7 +818,7 @@ void slap_mods_opattrs(
        struct berval nname;
        char timebuf[ LDAP_LUTIL_GENTIME_BUFSIZE ];
        char csnbuf[ LDAP_LUTIL_CSNSTR_BUFSIZE ];
-       Modifications *mod, **modtail;
+       Modifications *mod, **modtail, *modlast;
 
        if ( SLAP_LASTMOD( op->o_bd ) ) {
                char *ptr;
@@ -869,18 +869,18 @@ void slap_mods_opattrs(
                assert( !BER_BVISNULL( &mod->sml_values[0] ) );
                mod->sml_nvalues = NULL;
                *modtail = mod;
+               modlast = mod;
                modtail = &mod->sml_next;
        
-               mod = *modtail;
                if ( get_manageDIT( op ) ) {
-                       for ( mod = mods; mod->sml_next; mod = mod->sml_next ) {
+                       for ( mod = mods; mod != modlast; mod = mod->sml_next ) {
                                if ( mod->sml_desc == slap_schema.si_ad_modifiersName ) {
                                        break;
                                }
                        }
                }
 
-               if ( mod == *modtail ) {
+               if ( mod->sml_desc != slap_schema.si_ad_modifiersName ) {
                        mod = (Modifications *) ch_malloc( sizeof( Modifications ) );
                        mod->sml_op = LDAP_MOD_REPLACE;
                        mod->sml_flags = SLAP_MOD_INTERNAL;
@@ -900,16 +900,15 @@ void slap_mods_opattrs(
                        modtail = &mod->sml_next;
                }
 
-               mod = *modtail;
                if ( get_manageDIT( op ) ) {
-                       for ( mod = mods; mod->sml_next; mod = mod->sml_next ) {
+                       for ( mod = mods; mod != modlast; mod = mod->sml_next ) {
                                if ( mod->sml_desc == slap_schema.si_ad_modifyTimestamp ) {
                                        break;
                                }
                        }
                }
 
-               if ( mod == *modtail ) {
+               if ( mod->sml_desc != slap_schema.si_ad_modifyTimestamp ) {
                        mod = (Modifications *) ch_malloc( sizeof( Modifications ) );
                        mod->sml_op = LDAP_MOD_REPLACE;
                        mod->sml_flags = SLAP_MOD_INTERNAL;