diff --git a/core/search/tree.go b/core/search/tree.go index d0dc2230..a07e24d6 100644 --- a/core/search/tree.go +++ b/core/search/tree.go @@ -100,6 +100,7 @@ func (t *Tree) next(n *node, route string, result *Result) bool { if route[i] != slash { continue } + token := route[:i] return n.forEach(func(k string, v *node) bool { r := match(k, token) @@ -163,21 +164,23 @@ func add(nd *node, route string, item interface{}) error { } for i := range route { - if route[i] == slash { - token := route[:i] - children := nd.getChildren(token) - if child, ok := children[token]; ok { - if child != nil { - return add(child, route[i+1:], item) - } - - return errInvalidState + if route[i] != slash { + continue + } + + token := route[:i] + children := nd.getChildren(token) + if child, ok := children[token]; ok { + if child != nil { + return add(child, route[i+1:], item) } - child := newNode(nil) - children[token] = child - return add(child, route[i+1:], item) + return errInvalidState } + + child := newNode(nil) + children[token] = child + return add(child, route[i+1:], item) } children := nd.getChildren(route) diff --git a/core/stores/sqlx/utils.go b/core/stores/sqlx/utils.go index 01b96a72..54408128 100644 --- a/core/stores/sqlx/utils.go +++ b/core/stores/sqlx/utils.go @@ -53,9 +53,9 @@ func format(query string, args ...interface{}) (string, error) { } var b strings.Builder - argIndex := 0 - + var argIndex int bytes := len(query) + for i := 0; i < bytes; i++ { ch := query[i] switch ch {