From 4231f1d92240e31f9c5f24bcec3e5bd84bed76d1 Mon Sep 17 00:00:00 2001 From: Knut Ahlers Date: Thu, 26 Dec 2019 03:51:13 +0100 Subject: [PATCH] Fix weird races, add support for line-trailing comments Signed-off-by: Knut Ahlers --- genericUnmarshaller.go | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/genericUnmarshaller.go b/genericUnmarshaller.go index 30d0574..183cec2 100644 --- a/genericUnmarshaller.go +++ b/genericUnmarshaller.go @@ -13,8 +13,8 @@ import ( ) var ( - singleLineValue = `^\s*%s\s?:\s?(.+)$` - arrayLineValue = `^\s*%s(\[([0-9]*)\])?\s?:\s?(.+)$` + singleLineValue = `^\s*%s\s?:\s?([^#]+)(?:$|#)` + arrayLineValue = `^\s*%s(\[([0-9]*)\])?\s?:\s?([^#]+)(?:$|#)` ) func genericUnmarshal(in []byte, out interface{}, unit *Unit) error { @@ -376,7 +376,11 @@ func getArrayValues(in []byte, name string) ([][]byte, error) { } if len(grp[2]) == 0 { - out = append(out, grp[3]) + tb := make([]byte, len(grp[3])) + for i, b := range grp[3] { + tb[i] = b + } + out = append(out, bytes.TrimSpace(tb)) continue } @@ -386,9 +390,11 @@ func getArrayValues(in []byte, name string) ([][]byte, error) { } out[idx] = make([]byte, len(grp[3])) + tb := make([]byte, len(grp[3])) for i, b := range grp[3] { - out[idx][i] = b + tb[i] = b } + out[idx] = bytes.TrimSpace(tb) } }