if( 0 ) {
retry: /* transaction retry */
if ( dummy.e_attrs ) {
- attrs_free( dummy.e_attrs );
+ if ( dummy.e_attrs != e->e_attrs )
+ attrs_free( dummy.e_attrs );
dummy.e_attrs = NULL;
}
if (e != NULL) {
goto return_results;
}
- assert( op->orr_modlist != NULL );
-
if( op->o_preread ) {
if( preread_ctrl == NULL ) {
preread_ctrl = &ctrls[num_ctrls++];
dummy.e_attrs = e->e_attrs;
- /* modify entry */
- rs->sr_err = bdb_modify_internal( op, lt2, op->orr_modlist, &dummy,
- &rs->sr_text, textbuf, textlen );
- if( rs->sr_err != LDAP_SUCCESS ) {
- Debug(LDAP_DEBUG_TRACE,
- "<=- " LDAP_XSTRING(bdb_modrdn)
- ": modify failed: %s (%d)\n",
- db_strerror(rs->sr_err), rs->sr_err, 0 );
- if ( ( rs->sr_err == LDAP_INSUFFICIENT_ACCESS ) && opinfo.boi_err ) {
- rs->sr_err = opinfo.boi_err;
- }
- if ( dummy.e_attrs == e->e_attrs ) dummy.e_attrs = NULL;
- switch( rs->sr_err ) {
- case DB_LOCK_DEADLOCK:
- case DB_LOCK_NOTGRANTED:
- goto retry;
+ if( op->orr_modlist != NULL ) {
+ /* modify entry */
+ rs->sr_err = bdb_modify_internal( op, lt2, op->orr_modlist, &dummy,
+ &rs->sr_text, textbuf, textlen );
+ if( rs->sr_err != LDAP_SUCCESS ) {
+ Debug(LDAP_DEBUG_TRACE,
+ "<=- " LDAP_XSTRING(bdb_modrdn)
+ ": modify failed: %s (%d)\n",
+ db_strerror(rs->sr_err), rs->sr_err, 0 );
+ if ( ( rs->sr_err == LDAP_INSUFFICIENT_ACCESS ) && opinfo.boi_err ) {
+ rs->sr_err = opinfo.boi_err;
+ }
+ switch( rs->sr_err ) {
+ case DB_LOCK_DEADLOCK:
+ case DB_LOCK_NOTGRANTED:
+ goto retry;
+ }
+ goto return_results;
}
- goto return_results;
}
/* id2entry index */
} else {
rs->sr_err = LDAP_X_NO_OPERATION;
ltid = NULL;
- /* Only free attrs if they were dup'd. */
- if ( dummy.e_attrs == e->e_attrs ) dummy.e_attrs = NULL;
goto return_results;
}
if( num_ctrls ) rs->sr_ctrls = ctrls;
return_results:
- if ( dummy.e_attrs ) {
+ if ( dummy.e_attrs != e->e_attrs ) {
attrs_free( dummy.e_attrs );
}
send_ldap_result( op, rs );
goto return_results;
}
- assert( op->orr_modlist != NULL );
-
if( op->o_preread ) {
if( preread_ctrl == NULL ) {
preread_ctrl = &ctrls[num_ctrls++];
dummy.e_attrs = e->e_attrs;
- /* modify entry */
- rs->sr_err = mdb_modify_internal( op, txn, op->orr_modlist, &dummy,
- &rs->sr_text, textbuf, textlen );
- if( rs->sr_err != LDAP_SUCCESS ) {
- Debug(LDAP_DEBUG_TRACE,
- "<=- " LDAP_XSTRING(mdb_modrdn)
- ": modify failed: %s (%d)\n",
- mdb_strerror(rs->sr_err), rs->sr_err, 0 );
- if ( dummy.e_attrs == e->e_attrs ) dummy.e_attrs = NULL;
- goto return_results;
+ if ( op->orr_modlist != NULL ) {
+ /* modify entry */
+ rs->sr_err = mdb_modify_internal( op, txn, op->orr_modlist, &dummy,
+ &rs->sr_text, textbuf, textlen );
+ if( rs->sr_err != LDAP_SUCCESS ) {
+ Debug(LDAP_DEBUG_TRACE,
+ "<=- " LDAP_XSTRING(mdb_modrdn)
+ ": modify failed: %s (%d)\n",
+ mdb_strerror(rs->sr_err), rs->sr_err, 0 );
+ goto return_results;
+ }
}
/* id2entry index */
mdb_txn_abort( txn );
rs->sr_err = LDAP_X_NO_OPERATION;
txn = NULL;
- /* Only free attrs if they were dup'd. */
- if ( dummy.e_attrs == e->e_attrs ) dummy.e_attrs = NULL;
goto return_results;
} else {
if( num_ctrls ) rs->sr_ctrls = ctrls;
return_results:
- if ( dummy.e_attrs ) {
+ if ( dummy.e_attrs != e->e_attrs ) {
attrs_free( dummy.e_attrs );
}
send_ldap_result( op, rs );
}
SQLFreeStmt( sth, SQL_DROP );
- assert( op->orr_modlist != NULL );
-
slap_mods_opattrs( op, &op->orr_modlist, 1 );
assert( e_id.eid_oc != NULL );
oc = e_id.eid_oc;
- rs->sr_err = backsql_modify_internal( op, rs, dbh, oc, &e_id, op->orr_modlist );
- slap_graduate_commit_csn( op );
- if ( rs->sr_err != LDAP_SUCCESS ) {
- e = &r;
- goto done;
+
+ if ( op->orr_modlist != NULL ) {
+ rs->sr_err = backsql_modify_internal( op, rs, dbh, oc, &e_id, op->orr_modlist );
+ slap_graduate_commit_csn( op );
+ if ( rs->sr_err != LDAP_SUCCESS ) {
+ e = &r;
+ goto done;
+ }
}
if ( BACKSQL_CHECK_SCHEMA( bi ) ) {