[wellwell-devel] [wellwell] Fix infinite loop in [datetime] when subtracting business days.

Stefan Hornburg wellwell-devel at rt.icdevgroup.org
Fri Sep 17 09:15:33 UTC 2010


commit 9db0db531580e14e02e5c6b578e9792ecf85759e
Author: Stefan Hornburg (Racke) <racke at linuxia.de>
Date:   Fri Sep 17 11:14:25 2010 +0200

    Fix infinite loop in [datetime] when subtracting business days.

 global/datetime.tag |   13 +++++++++++--
 1 files changed, 11 insertions(+), 2 deletions(-)
---
diff --git a/global/datetime.tag b/global/datetime.tag
index 02b0676..68641a1 100644
--- a/global/datetime.tag
+++ b/global/datetime.tag
@@ -166,10 +166,19 @@ sub {
 		if ($scope eq 'days') {
 			$from_dt->add(days => $amount);
 		} elsif ($scope eq 'business_days') {	
+			my $incr;
+
+			if ($function eq 'sub') {
+				$incr = -1;
+			}
+			else {
+				$incr = 1;
+			}
+
 			while($amount){
-				$from_dt->add(days => 1);
+				$from_dt->add(days => $incr);
 				if($from_dt->day_of_week() < 6){
-					$amount--;
+					$amount -= $incr;
 				}
 			}
 		} elsif ($scope eq 'weeks') {



More information about the wellwell-devel mailing list