dbwrap: Convert dbwrap_delete to dbwrap_do_locked
authorVolker Lendecke <vl@samba.org>
Wed, 9 Nov 2016 15:37:49 +0000 (16:37 +0100)
committerJeremy Allison <jra@samba.org>
Tue, 15 Aug 2017 22:27:10 +0000 (00:27 +0200)
Signed-off-by: Volker Lendecke <vl@samba.org>
Reviewed-by: Jeremy Allison <jra@samba.org>
lib/dbwrap/dbwrap.c

index 0e576b30f60bc28fcb2bad3e3125da141e457158..e1d792fa2f8ba4c49516f73f018cffe0d61fc1e8 100644 (file)
@@ -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,