소스 검색

bugfix when gc runs early

Nicolas Cannasse 2 년 전
부모
커밋
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");
 		}
 	}