comparison mercurial/util.py @ 15157:c208dcd0f709 stable

util: fix crash converting an invalid future date to string Post-2038 timestamps cannot be handled on 32-bit architectures. Clamp such dates to the maximum 32-bit timestamp.
author Kevin Gessner <kevin@fogcreek.com>
date Fri, 23 Sep 2011 09:02:27 -0700
parents 94b200a11cf7
children 85322c19c831
comparison
equal deleted inserted replaced
15152:94b200a11cf7 15157:c208dcd0f709
889 if "%1" in format or "%2" in format: 889 if "%1" in format or "%2" in format:
890 sign = (tz > 0) and "-" or "+" 890 sign = (tz > 0) and "-" or "+"
891 minutes = abs(tz) // 60 891 minutes = abs(tz) // 60
892 format = format.replace("%1", "%c%02d" % (sign, minutes // 60)) 892 format = format.replace("%1", "%c%02d" % (sign, minutes // 60))
893 format = format.replace("%2", "%02d" % (minutes % 60)) 893 format = format.replace("%2", "%02d" % (minutes % 60))
894 s = time.strftime(format, time.gmtime(float(t) - tz)) 894 try:
895 t = time.gmtime(float(t) - tz)
896 except ValueError:
897 # time was out of range
898 t = time.gmtime(sys.maxint)
899 s = time.strftime(format, t)
895 return s 900 return s
896 901
897 def shortdate(date=None): 902 def shortdate(date=None):
898 """turn (timestamp, tzoff) tuple into iso 8631 date.""" 903 """turn (timestamp, tzoff) tuple into iso 8631 date."""
899 return datestr(date, format='%Y-%m-%d') 904 return datestr(date, format='%Y-%m-%d')