about summary refs log tree commit diff stats
diff options
context:
space:
mode:
-rw-r--r--widgets/msgviewer.go8
1 files changed, 8 insertions, 0 deletions
diff --git a/widgets/msgviewer.go b/widgets/msgviewer.go
index d6085bf..107ff59 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() {