2
0
Эх сурвалжийг харах

bugfix when gc runs early

Nicolas Cannasse 2 жил өмнө
parent
commit
3837f1e7f3
1 өөрчлөгдсөн 3 нэмэгдсэн , 1 устгасан
  1. 3 1
      src/gc.c

+ 3 - 1
src/gc.c

@@ -661,6 +661,8 @@ static void gc_dispatch_mark( gc_mstack *st ) {
 	if( nthreads == 0 )
 		return;
 	int count = GC_STACK_COUNT(st) / (nthreads + 1);
+	if( count == 0 )
+		return;
 	for(i=0;i<gc_mark_threads;i++) {
 		gc_mthread *t = &mark_threads[i];
 		if( !atomic_bit_set(&mark_threads_active,1<<i) )
@@ -825,7 +827,7 @@ static void gc_mark() {
 			hl_semaphore_acquire(mark_threads_done);
 		for(i=0;i<gc_mark_threads;i++) {
 			gc_mthread *t = &mark_threads[i];
-			if( GC_STACK_COUNT(&t->stack) != 0 )
+			if( GC_STACK_COUNT(&t->stack) > 0 )
 				hl_fatal("assert");
 		}
 	}