diff options
author | Volker Lendecke <vl@samba.org> | 2016-11-09 16:37:49 +0100 |
---|---|---|
committer | Jeremy Allison <jra@samba.org> | 2017-08-16 00:27:10 +0200 |
commit | a11450d825b756ca8880c6307e38a6ce072fff54 (patch) | |
tree | bf109bb3af42878be36c80fd6d1089265dd057a6 /lib/dbwrap | |
parent | 5095733f923158701fb5a566cd16c2112d51e1c4 (diff) | |
download | samba-a11450d825b756ca8880c6307e38a6ce072fff54.tar.gz |
dbwrap: Convert dbwrap_delete to dbwrap_do_locked
Signed-off-by: Volker Lendecke <vl@samba.org>
Reviewed-by: Jeremy Allison <jra@samba.org>
Diffstat (limited to 'lib/dbwrap')
-rw-r--r-- | lib/dbwrap/dbwrap.c | 25 |
1 files changed, 16 insertions, 9 deletions
diff --git a/lib/dbwrap/dbwrap.c b/lib/dbwrap/dbwrap.c index 0e576b30f60..e1d792fa2f8 100644 --- a/lib/dbwrap/dbwrap.c +++ b/lib/dbwrap/dbwrap.c @@ -327,20 +327,27 @@ NTSTATUS dbwrap_store(struct db_context *db, TDB_DATA key, return state.status; } +struct dbwrap_delete_state { + NTSTATUS status; +}; + +static void dbwrap_delete_fn(struct db_record *rec, void *private_data) +{ + struct dbwrap_delete_state *state = private_data; + state->status = dbwrap_record_delete(rec); +} + NTSTATUS dbwrap_delete(struct db_context *db, TDB_DATA key) { - struct db_record *rec; + struct dbwrap_delete_state state; NTSTATUS status; - TALLOC_CTX *frame = talloc_stackframe(); - rec = dbwrap_fetch_locked(db, frame, key); - if (rec == NULL) { - TALLOC_FREE(frame); - return NT_STATUS_NO_MEMORY; + status = dbwrap_do_locked(db, key, dbwrap_delete_fn, &state); + if (!NT_STATUS_IS_OK(status)) { + return status; } - status = dbwrap_record_delete(rec); - TALLOC_FREE(frame); - return status; + + return state.status; } NTSTATUS dbwrap_traverse(struct db_context *db, |