diff options
-rw-r--r-- | widgets/msgviewer.go | 18 |
1 files changed, 17 insertions, 1 deletions
diff --git a/widgets/msgviewer.go b/widgets/msgviewer.go index 39ee6371..e0fe6aac 100644 --- a/widgets/msgviewer.go +++ b/widgets/msgviewer.go @@ -386,15 +386,31 @@ func (pv *PartViewer) attemptCopy() { header.SetText("Content-Description", pv.part.Description) if pv.filter != nil { stdout, _ := pv.filter.StdoutPipe() + stderr, _ := pv.filter.StderrPipe() pv.filter.Start() + ch := make(chan interface{}) go func() { _, err := io.Copy(pv.pagerin, stdout) if err != nil { pv.err = err pv.Invalidate() } - pv.pagerin.Close() stdout.Close() + ch <- nil + }() + go func() { + _, err := io.Copy(pv.pagerin, stderr) + if err != nil { + pv.err = err + pv.Invalidate() + } + stderr.Close() + ch <- nil + }() + go func() { + <-ch + <-ch + pv.pagerin.Close() }() } go func() { |