From 036cc00ecdb8908f3ac54e8cc9fef006bbd8095e Mon Sep 17 00:00:00 2001 From: Robin Haberkorn Date: Sun, 25 Nov 2012 14:02:30 +0100 Subject: fixed range interpretation for search command: had to be given in the wrong order * also inverse ranges are now supported (S if a>b) and result in constrained backward searches --- parser.cpp | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) (limited to 'parser.cpp') diff --git a/parser.cpp b/parser.cpp index a94f7dd..b63658d 100644 --- a/parser.cpp +++ b/parser.cpp @@ -1441,12 +1441,19 @@ StateSearch::initial(void) throw (Error) if (expressions.args()) { /* TODO: optional count argument? */ parameters.count = 1; - parameters.from = (gint)v; - parameters.to = (gint)expressions.pop_num_calc(); + parameters.from = (gint)expressions.pop_num_calc(); + parameters.to = (gint)v; if (!Validate::pos(parameters.from) || !Validate::pos(parameters.to)) throw RangeError("S"); + + if (parameters.from > parameters.to) { + v = parameters.from; + parameters.from = parameters.to; + parameters.to = v; + parameters.count *= -1; + } } else { parameters.count = (gint)v; if (v >= 0) { -- cgit v1.2.3