diff --git a/rarchdb/rarchdb.c b/rarchdb/rarchdb.c index 8afdfa593e..dc28441401 100644 --- a/rarchdb/rarchdb.c +++ b/rarchdb/rarchdb.c @@ -189,7 +189,7 @@ static int binsearch(const void *buff, const void *item, uint64_t count, uint8_t { int mid = count / 2; int item_size = field_size + sizeof(uint64_t); - const void *current = buff + (mid * item_size); + uint64_t *current = (uint64_t*)buff + (mid * item_size); int rv = node_compare(current, item, &field_size); if (rv == 0) @@ -223,7 +223,8 @@ int rarchdb_find_entry(struct rarchdb *db, const char *index_name, const void *k while (nread < bufflen) { - rv = read(db->fd, buff + nread, bufflen - nread); + void *buff_ = (uint64_t*)buff + nread; + rv = read(db->fd, buff_, bufflen - nread); if (rv <= 0) { free(buff); @@ -291,6 +292,7 @@ int rarchdb_create_index(struct rarchdb *db, const char* name, const char *field struct rmsgpack_dom_value item; struct rmsgpack_dom_value *field; void* buff = NULL; + uint64_t *buff_u64 = NULL; uint8_t field_size = 0; struct bintree tree; uint64_t item_loc = rarchdb_tell(db); @@ -349,7 +351,8 @@ int rarchdb_create_index(struct rarchdb *db, const char* name, const char *field } memcpy(buff, field->binary.buff, field_size); - memcpy(buff + field_size, &item_loc, sizeof(uint64_t)); + buff_u64 = (uint64_t*)buff + field_size; + memcpy(buff_u64, &item_loc, sizeof(uint64_t)); if (bintree_insert(&tree, buff) != 0) {