From d8bce06a339076ad07fc9997d8e244ac86ce51f5 Mon Sep 17 00:00:00 2001 From: Arunesh Dwivedi Date: Tue, 4 Aug 2026 08:07:23 +0000 Subject: [PATCH] fix: guard nil Input in followingQuery and precedingQuery Clone() concat("a","f") produced a query with nil Input, and Clone() called f.Input.Clone() without checking, causing a nil pointer dereference. Add nil checks so Clone() returns a shallow copy when Input is nil. --- query.go | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/query.go b/query.go index b12353f..2b6d02c 100644 --- a/query.go +++ b/query.go @@ -589,6 +589,9 @@ func (f *followingQuery) Test(n NodeNavigator) bool { } func (f *followingQuery) Clone() query { + if f.Input == nil { + return &followingQuery{Sibling: f.Sibling, Predicate: f.Predicate} + } return &followingQuery{Input: f.Input.Clone(), Sibling: f.Sibling, Predicate: f.Predicate} } @@ -678,6 +681,9 @@ func (p *precedingQuery) Test(n NodeNavigator) bool { } func (p *precedingQuery) Clone() query { + if p.Input == nil { + return &precedingQuery{Sibling: p.Sibling, Predicate: p.Predicate} + } return &precedingQuery{Input: p.Input.Clone(), Sibling: p.Sibling, Predicate: p.Predicate} }