Codebase list golang-github-vbauerster-mpb / bfddef7
recover if (*Bar).bytes panics Vladimir Bauer 9 years ago
1 changed file(s) with 12 addition(s) and 3 deletion(s). Raw diff Collapse all Expand all
33 "context"
44 "errors"
55 "io"
6 "log"
67 "os"
78 "sort"
89 "sync"
1011
1112 "github.com/vbauerster/mpb/cwriter"
1213 )
14
15 var logger = log.New(os.Stderr, "mpb: ", log.LstdFlags|log.Lshortfile)
1316
1417 // ErrCallAfterStop thrown by panic, if Progress methods like AddBar() are called
1518 // after Stop() has been called
181184 t.Stop()
182185 close(p.done)
183186 }()
184 const numDrawers = 4
187 const numDrawers = 3
185188 bars := make([]*Bar, 0, 4)
189 var wg sync.WaitGroup
190 recoverIfPanic := func() {
191 if e := recover(); e != nil {
192 logger.Printf("unexpected panic: %+v\n", e)
193 }
194 wg.Done()
195 }
186196 for {
187197 select {
188198 case w := <-p.outChangeReqCh:
221231 width, _ := cwriter.TerminalWidth()
222232 ibars := iBarsGen(bars, width)
223233 c := make(chan indexedBarBuffer)
224 var wg sync.WaitGroup
225234 wg.Add(numDrawers)
226235 for i := 0; i < numDrawers; i++ {
227236 go func() {
237 defer recoverIfPanic()
228238 drawer(ibars, c)
229 wg.Done()
230239 }()
231240 }
232241 go func() {