@@ -48,18 +48,20 @@ func decodeEnvSectionKey(encoded string) (ok bool, section, key string) {
4848 inKey := false
4949 last := 0
5050 escapeStringIndices := escapeRegex .FindAllStringIndex (encoded , - 1 )
51+ var keySb51 strings.Builder
52+ var sectionSb51 strings.Builder
5153 for _ , unescapeIdx := range escapeStringIndices {
5254 preceding := encoded [last :unescapeIdx [0 ]]
5355 if ! inKey {
5456 if splitter := strings .Index (preceding , "__" ); splitter > - 1 {
55- section += preceding [:splitter ]
57+ sectionSb51 . WriteString ( preceding [:splitter ])
5658 inKey = true
57- key += preceding [splitter + 2 :]
59+ keySb51 . WriteString ( preceding [splitter + 2 :])
5860 } else {
59- section += preceding
61+ sectionSb51 . WriteString ( preceding )
6062 }
6163 } else {
62- key += preceding
64+ keySb51 . WriteString ( preceding )
6365 }
6466 toDecode := encoded [unescapeIdx [0 ]+ 3 : unescapeIdx [1 ]- 1 ]
6567 decodedBytes := make ([]byte , len (toDecode )/ 2 )
@@ -69,12 +71,14 @@ func decodeEnvSectionKey(encoded string) (ok bool, section, key string) {
6971 decodedBytes [i ] = byte (byteInt )
7072 }
7173 if inKey {
72- key += string (decodedBytes )
74+ keySb51 . Write (decodedBytes )
7375 } else {
74- section += string (decodedBytes )
76+ sectionSb51 . Write (decodedBytes )
7577 }
7678 last = unescapeIdx [1 ]
7779 }
80+ key += keySb51 .String ()
81+ section += sectionSb51 .String ()
7882 remaining := encoded [last :]
7983 if ! inKey {
8084 if splitter := strings .Index (remaining , "__" ); splitter > - 1 {
0 commit comments