From: Howard Chu Date: Sat, 14 Apr 2012 14:54:26 +0000 (-0700) Subject: Support double-buffering for threaded slapadd X-Git-Tag: OPENLDAP_REL_ENG_2_4_32~18 X-Git-Url: https://git.sur5r.net/?a=commitdiff_plain;h=8f284ce023016618b36905ca5f82f18ffc686cbe;p=openldap Support double-buffering for threaded slapadd --- diff --git a/servers/slapd/slapadd.c b/servers/slapd/slapadd.c index 034e941404..58041d3026 100644 --- a/servers/slapd/slapadd.c +++ b/servers/slapd/slapadd.c @@ -333,6 +333,7 @@ slapadd( int argc, char **argv ) struct berval bvtext; ldap_pvt_thread_t thr; ID id; + Entry *prev = NULL; int ldifrc; int rc = EXIT_SUCCESS; @@ -434,8 +435,11 @@ slapadd( int argc, char **argv ) "(line=%d): %s\n", progname, erec.e->e_dn, erec.lineno, bvtext.bv_val ); rc = EXIT_FAILURE; - entry_free( erec.e ); - if( continuemode ) continue; + if( continuemode ) { + if ( prev ) entry_free( prev ); + prev = erec.e; + continue; + } break; } if ( verbose ) @@ -447,7 +451,8 @@ slapadd( int argc, char **argv ) erec.e->e_dn ); } - entry_free( erec.e ); + if ( prev ) entry_free( prev ); + prev = erec.e; } if ( ldif_threaded ) { @@ -458,6 +463,7 @@ slapadd( int argc, char **argv ) ldap_pvt_thread_mutex_unlock( &add_mutex ); ldap_pvt_thread_join( thr, NULL ); } + if ( erec.e ) entry_free( erec.e ); if ( ldifrc < 0 ) rc = EXIT_FAILURE;