Skip to content

Commit 953e994

Browse files
committed
#72 Memory assignment improvements in DecodeB() and DecodeQ()
1 parent 710a124 commit 953e994

File tree

1 file changed

+11
-18
lines changed

1 file changed

+11
-18
lines changed

rfc2045/mime-decode.go

+11-18
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,9 @@
88

99
package rfc2045
1010
import "io"
11-
import "fmt"
12-
import "mime"
11+
import "bytes"
1312
import "strings"
13+
import "encoding/base64"
1414
import "mime/quotedprintable"
1515

1616
// DecodeB decodes Base64 encoded text.
@@ -20,15 +20,11 @@ import "mime/quotedprintable"
2020
// Returns:
2121
// - (string): Decoded text
2222
func DecodeB(argv0 string, argv1 string) (string, error) {
23-
if len(argv0) < 8 { return argv0, nil }
24-
if len(argv1) == 0 { argv1 = "utf-8" }
25-
26-
decodingif := new(mime.WordDecoder)
27-
base64text := strings.Join(strings.Split(strings.TrimSpace(argv0), "\n"), "")
28-
base64text = fmt.Sprintf("=?%s?B?%s?=", argv1, base64text)
23+
if len(argv0) < 8 { return argv0, nil }
2924

30-
plain, nyaan := decodingif.Decode(base64text); if nyaan != nil { return "", nyaan }
31-
return plain, nil
25+
base64text := strings.ReplaceAll(strings.TrimSpace(argv0), "\n", "")
26+
cv, nyaan := base64.StdEncoding.DecodeString(base64text); if nyaan != nil { return "", nyaan }
27+
return string(cv), nil
3228
}
3329

3430
// DecodeQ() decodes Quoted-Pritable encdoed text
@@ -38,14 +34,11 @@ func DecodeB(argv0 string, argv1 string) (string, error) {
3834
// - (string): Decoded text
3935
// - (error): Decoding error
4036
func DecodeQ(argv0 string) (string, error) {
41-
readstring := strings.NewReader(argv0)
42-
decodingif := quotedprintable.NewReader(readstring)
43-
plainvalue := ""
44-
45-
// Failed to decode the quoted-printable text
46-
plain, nyaan := io.ReadAll(decodingif); if nyaan != nil { plainvalue = argv0 }
47-
if len(plain) > 0 { plainvalue = string(plain) }
37+
if len(argv0) < 8 { return argv0, nil }
38+
decodingif := quotedprintable.NewReader(bytes.NewReader([]byte(argv0)))
4839

49-
return plainvalue, nyaan
40+
var readbuffer bytes.Buffer
41+
_, nyaan := io.Copy(&readbuffer, decodingif); if nyaan != nil { return "", nyaan }
42+
return readbuffer.String(), nil
5043
}
5144

0 commit comments

Comments
 (0)