]> git.lizzy.rs Git - dragonblocks_alpha.git/commitdiff
Fix SEGFAULTs
authorElias Fleckenstein <eliasfleckenstein@web.de>
Fri, 19 Mar 2021 15:08:08 +0000 (16:08 +0100)
committerElias Fleckenstein <eliasfleckenstein@web.de>
Fri, 19 Mar 2021 15:08:08 +0000 (16:08 +0100)
array.c
binsearch.c
server.c

diff --git a/array.c b/array.c
index 604201cd740d33d8917f1d3c426e63567d06ef92..de7733bb899543974e4f5751cfa7f56b7ee047b8 100644 (file)
--- a/array.c
+++ b/array.c
@@ -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;
 }
 
index efc6a1a8b7c5e33b2c9fae2d50b87e73bb0570da..d6b13620484bdff047ad71faa077833734fc0aaa 100644 (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;
index c4b97a4fb3acb993255c81a6eca34d16c44b42f8..538b0b58d2555cbe4352ffa7dda7745a96195b78 100644 (file)
--- a/server.c
+++ b/server.c
@@ -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);
 }