From dea6e1da421ff7917ca8dd4d20bbe4495c7537c5 Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Fri, 6 Jun 2025 16:02:31 +0530 Subject: [PATCH] Special case parallel run with one worker --- tools/utils/misc.go | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/tools/utils/misc.go b/tools/utils/misc.go index dbae484b4..5e3268ae7 100644 --- a/tools/utils/misc.go +++ b/tools/utils/misc.go @@ -95,6 +95,15 @@ func Run_in_parallel_over_range(num_procs int, f func(int, int) error, start, li num_procs = runtime.NumCPU() } num_procs = max(1, min(num_procs, num_items)) + if num_procs < 2 { + defer func() { + if r := recover(); r != nil { + stacktrace, e := Format_stacktrace_on_panic(r) + err = fmt.Errorf("%s\n\n%w", stacktrace, e) + } + }() + return f(start, limit) + } chunk_sz := max(1, num_items/num_procs) var wg sync.WaitGroup echan := make(chan error, num_procs) @@ -133,7 +142,7 @@ func Map[T any, O any](f func(x T) O, s []T) []O { func Repeat[T any](x T, n int) []T { ans := make([]T, n) - for i := 0; i < n; i++ { + for i := range n { ans[i] = x } return ans