Fix SEGFAULTs

master
Elias Fleckenstein 2021-03-19 16:08:08 +01:00
parent e3117e3197
commit 19d143de81
3 changed files with 13 additions and 6 deletions

View File

@ -22,7 +22,7 @@ void array_insert(Array *array, void *elem, size_t idx)
array_alloc(array, 1);
void **iptr = array->ptr + idx;
memmove(iptr + 1, iptr, oldsiz - idx);
memmove(iptr + 1, iptr, (oldsiz - idx) * sizeof(void *));
*iptr = elem;
}

View File

@ -15,7 +15,7 @@ BinsearchResult binsearch(void *search, void **array, size_t size, BinsearchComp
if (state == 0)
return (BinsearchResult) {true, mid};
else if (state < 0)
else if (state > 0)
max = mid;
else
min = mid;

View File

@ -1,14 +1,21 @@
#include <assert.h>
#include "map.h"
int main()
{
Map *map = map_create(NULL);
map_set_node(map, (v3s32) {0, 0, 0}, map_node_create(NODE_STONE));
printf("test 1 passed\n");
map_set_node(map, (v3s32) {0, 5, 89}, map_node_create(NODE_DIRT));
printf("test 2 passed\n");
map_set_node(map, (v3s32) {321, 0, 89}, map_node_create(NODE_GRASS));
printf("test 3 passed\n");
map_set_node(map, (v3s32) {3124, 99, 2}, map_node_create(NODE_GRASS));
printf("test 4 passed\n");
MapBlock *block = map_get_block(map, (v3s32) {0, 0, 0}, false);
if (! block) {
fprintf(stderr, "Map error\n");
return 1;
}
assert(block);
printf("(0 | 0 | 0) Block dump:\n");
ITERATE_MAPBLOCK printf("%d", block->data[x][y][z].type);
map_delete(map);
}