Codebase list golang-github-vbauerster-mpb / 6c13b9a
it's ok to return error immediately b.frameCh is buffered Vladimir Bauer 3 years ago
1 changed file(s) with 3 addition(s) and 10 deletion(s). Raw diff Collapse all Expand all
316316 return s.flush(cw, height)
317317 }
318318
319 func (s *pState) flush(cw *cwriter.Writer, height int) (err error) {
319 func (s *pState) flush(cw *cwriter.Writer, height int) error {
320320 var wg sync.WaitGroup
321321 var popCount int
322322
324324 b := heap.Pop(&s.bHeap).(*Bar)
325325 frame := <-b.frameCh
326326 if frame.err != nil {
327 if err == nil {
328 err = frame.err
329 }
330 continue
327 return frame.err
331328 }
332329 var usedRows int
333330 for i := len(frame.rows) - 1; i >= 0; i-- {
367364 s.pool = append(s.pool, b)
368365 }
369366
370 if err != nil {
371 return err
372 }
373
374367 wg.Add(1)
375368 go func() {
376369 for _, b := range s.pool {
387380 }
388381 }
389382
390 err = cw.Flush(len(s.rows) - popCount)
383 err := cw.Flush(len(s.rows) - popCount)
391384 wg.Wait()
392385 s.rows = s.rows[:0]
393386 s.pool = s.pool[:0]