diff options
-rw-r--r-- | lib/tdb/common/transaction.c | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/lib/tdb/common/transaction.c b/lib/tdb/common/transaction.c index 390e51dfa2a..73d02b684a3 100644 --- a/lib/tdb/common/transaction.c +++ b/lib/tdb/common/transaction.c @@ -854,13 +854,12 @@ static int transaction_setup_recovery(struct tdb_context *tdb, return -1; } - data = (unsigned char *)malloc(recovery_size + sizeof(*rec)); - if (data == NULL) { + rec = malloc(recovery_size + sizeof(*rec)); + if (rec == NULL) { tdb->ecode = TDB_ERR_OOM; return -1; } - rec = (struct tdb_record *)data; memset(rec, 0, sizeof(*rec)); rec->magic = TDB_RECOVERY_INVALID_MAGIC; @@ -869,6 +868,8 @@ static int transaction_setup_recovery(struct tdb_context *tdb, rec->key_len = old_map_size; CONVERT(*rec); + data = (unsigned char *)rec; + /* build the recovery data into a single blob to allow us to do a single large write, which should be more efficient */ p = data + sizeof(*rec); |