@@ -103,7 +103,14 @@ void idris_gc(VM* vm) {
103103 free(vm->heap.old);
104104
105105 vm->heap.heap = newheap;
106− vm->heap.next = newheap;
106+#ifdef FORCE_ALIGNMENT
107+ if (((i_int)(vm->heap.heap)&1) == 1) {
108+ vm->heap.next = newheap + 1;
109+ } else
110+#endif
111+ {
112+ vm->heap.next = newheap;
113+ }
107114 vm->heap.end = newheap + vm->heap.size;
108115
109116 VAL* root;
@@ -111,6 +118,7 @@ void idris_gc(VM* vm) {
111118 for(root = vm->valstack; root < vm->valstack_top; ++root) {
112119 *root = copy(vm, *root);
113120 }
121+
114122#ifdef HAS_PTHREAD
115123 for(root = vm->inbox_ptr; root < vm->inbox_write; ++root) {
116124 *root = copy(vm, *root);