diff options
-rw-r--r-- | widgets/msgviewer.go | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/widgets/msgviewer.go b/widgets/msgviewer.go index d6085bf1..107ff59a 100644 --- a/widgets/msgviewer.go +++ b/widgets/msgviewer.go @@ -5,6 +5,7 @@ import ( "errors" "fmt" "io" + "os" "os/exec" "regexp" "strings" @@ -641,11 +642,18 @@ func (pv *PartViewer) copyFilterOutToPager() { func (pv *PartViewer) copySourceToSinkStripAnsi() { scanner := bufio.NewScanner(pv.source) + // some people send around huge html without any newline in between + // this did overflow the default 64KB buffer of bufio.Scanner. + // If something can't fit in a GB there's no hope left + scanner.Buffer(nil, 1024*1024*1024) for scanner.Scan() { text := scanner.Text() text = ansi.ReplaceAllString(text, "") io.WriteString(pv.sink, text+"\n") } + if err := scanner.Err(); err != nil { + fmt.Fprintf(os.Stderr, "failed to read line: %v\n", err) + } } func (pv *PartViewer) Invalidate() { |