Commit b870595d authored by Willem Thiart's avatar Willem Thiart
Browse files

Fix memory not being copied properly bug

parent 8fb1f6c0
......@@ -95,9 +95,9 @@ int log_append_entry(log_t* me_, raft_entry_t* c)
__ensurecapacity(me);
memcpy(&me->entries[me->back], c, sizeof(raft_entry_t));
if (me->cb && me->cb->log_offer)
me->cb->log_offer(me->raft, raft_get_udata(me->raft), c, me->back);
memcpy(&me->entries[me->back], c, sizeof(raft_entry_t));
me->count++;
me->back++;
return 0;
......
......@@ -138,6 +138,41 @@ void TestRaft_server_append_entry_means_entry_gets_current_term(CuTest* tc)
CuAssertTrue(tc, 1 == raft_get_current_idx(r));
}
static int __raft_logentry_offer(
raft_server_t* raft,
void *udata,
raft_entry_t *ety,
int ety_idx
)
{
ety->data.buf = udata;
return 0;
}
void TestRaft_server_append_entry_is_retrievable(CuTest * tc)
{
raft_cbs_t funcs = {
.log_offer = __raft_logentry_offer,
};
char *data = "xxx";
void *r = raft_new();
raft_set_state(r, RAFT_STATE_CANDIDATE);
raft_set_callbacks(r, &funcs, data);
raft_set_current_term(r, 5);
raft_entry_t ety;
ety.term = 1;
ety.id = 100;
ety.data.len = 4;
ety.data.buf = (unsigned char*)"aaa";
raft_append_entry(r, &ety);
raft_entry_t* kept = raft_get_entry_from_idx(r, 1);
CuAssertTrue(tc, kept->data.buf == data);
}
#if 0
/* TODO: no support for duplicate detection yet */
void
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment