mercurial/changelog.py
changeset 2137 5fefab118f7e
parent 2072 74d3f5336b66
child 2142 8a1e2a9c7013
--- a/mercurial/changelog.py
+++ b/mercurial/changelog.py
@@ -41,14 +41,15 @@ class changelog(revlog):
         if date:
             # validate explicit (probably user-specified) date and
             # time zone offset. values must fit in signed 32 bits for
-            # current 32-bit linux runtimes.
+            # current 32-bit linux runtimes. timezones go from UTC-12
+            # to UTC+14
             try:
                 when, offset = map(int, date.split(' '))
             except ValueError:
                 raise ValueError(_('invalid date: %r') % date)
             if abs(when) > 0x7fffffff:
                 raise ValueError(_('date exceeds 32 bits: %d') % when)
-            if abs(offset) >= 43200:
+            if offset < -50400 or offset > 43200:
                 raise ValueError(_('impossible time zone offset: %d') % offset)
         else:
             date = "%d %d" % util.makedate()