diff --git a/modules/mol/base/src/impl/query_ast.cc b/modules/mol/base/src/impl/query_ast.cc index 1cf0133eab0bde3bc9cd6745f79fd7c7f7bdd962..9c602c124619efd910cb7d0e32c740112d5dc487 100644 --- a/modules/mol/base/src/impl/query_ast.cc +++ b/modules/mol/base/src/impl/query_ast.cc @@ -93,8 +93,12 @@ bool WithinParam::HasValidRef() const { WithinParam::WithinParam() : center_(geom::Vec3(0,0,0)), radius_(0.0), lazily_bound_ref_(-1) { } + bool WithinParam::operator==(const WithinParam& p) const { - return center_ == p.center_ && p.radius_==radius_; + if (lazily_bound_ref_>-1) { + return lazily_bound_ref_==p.lazily_bound_ref_ && p.radius_==radius_; + } + return center_==p.center_; } float WithinParam::GetRadiusSquare() const { diff --git a/modules/mol/base/src/impl/query_impl.cc b/modules/mol/base/src/impl/query_impl.cc index c0c2f54542355cf06660254f10dd4bfc0e21ee9c..411f1d9bc18f3df563730a8551885a7a75a86343 100644 --- a/modules/mol/base/src/impl/query_impl.cc +++ b/modules/mol/base/src/impl/query_impl.cc @@ -988,7 +988,7 @@ Node* QueryImpl::ParseWithinExpr(QueryLexer& lexer) { // index of the query for later access. QueryImplP q(new QueryImpl(rhs)); bracketed_expr_.push_back(q); - ParamType pt(WithinParam(bracketed_expr_.size()-1, rv*rv)); + ParamType pt(WithinParam(bracketed_expr_.size()-1, rv*rv)); inversion_stack_.pop_back(); CompOP comp_op= COP_LE; if (inversion_stack_.back())