From 7904dd3405d19b8b161f596c7293741ab19917de Mon Sep 17 00:00:00 2001 From: David Hull Date: Sat, 21 Nov 2015 20:56:10 +0000 Subject: [PATCH] tz-erl: Fix offset_minutes($o) when $o just digits is hours offset. Previouly when offset_minute's argument was just digits (for example, "+2" instead of "+2:00"), the argument was incorrectly interpreted as minutes when it should be as hours. --- db/tz-erl | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/db/tz-erl b/db/tz-erl index 4936553..24e0af1 100755 --- a/db/tz-erl +++ b/db/tz-erl @@ -145,15 +145,17 @@ sub process_data { } } +# Converts an offset in the format "[+-]?HH:MM" or "[+-]?HH" into minutes. +# For example, "2:00" -> 120, "-0:30" -> -30, "+5" -> 300. sub offset_minutes { my ($off, $adj) = @_; my $convert_offset = sub { - my $m = $_[0]; - if ($m =~ m/^([\+\-]?)(?:(\d+):)?(\d+)$/) { - $m = (defined $2 ? $2 : 0) * MPH + $3; - if ($1 eq '-') { $m = -$m; } - } + $_[0] =~ m/^([\+\-]?)(\d+)(?::(\d+))?$/ + or die "offset \"$_[0]\" did not match"; + my $m = $2 * MPH; + if (defined $3) { $m += $3; } + if ($1 eq '-') { $m = -$m; } return $m; };