Codebase list golang-github-vbauerster-mpb / acc8708
render wrapper setting refreshCh to nil may potentially dead lock so instead just override render wrapper on error. Vladimir Bauer 3 years ago
1 changed file(s) with 4 addition(s) and 2 deletion(s). Raw diff Collapse all Expand all
254254 func (p *Progress) serve(s *pState, cw *cwriter.Writer) {
255255 defer p.cwg.Done()
256256
257 render := func() error { return s.render(cw) }
258
257259 refreshCh := s.newTicker(p.done)
258260
259261 for {
263265 case fn := <-p.interceptIo:
264266 fn(cw)
265267 case <-refreshCh:
266 err := s.render(cw)
268 err := render()
267269 if err != nil {
268270 p.cancel() // cancel all bars
269271 p.once.Do(p.shutdown)
270272 s.heapUpdated = false
271 refreshCh = nil
273 render = func() error { return nil }
272274 _, _ = fmt.Fprintln(s.debugOut, err)
273275 }
274276 case <-s.shutdownNotifier: