[Python-checkins] python/nondist/sandbox/datetime obj_timetz.c,1.12,1.13
tim_one@users.sourceforge.net
tim_one@users.sourceforge.net
2002年12月11日 17:30:50 -0800
Update of /cvsroot/python/python/nondist/sandbox/datetime
In directory sc8-pr-cvs1:/tmp/cvs-serv16595
Modified Files:
obj_timetz.c
Log Message:
More.
Index: obj_timetz.c
===================================================================
RCS file: /cvsroot/python/python/nondist/sandbox/datetime/obj_timetz.c,v
retrieving revision 1.12
retrieving revision 1.13
diff -C2 -d -r1.12 -r1.13
*** obj_timetz.c 12 Dec 2002 01:13:36 -0000 1.12
--- obj_timetz.c 12 Dec 2002 01:30:47 -0000 1.13
***************
*** 224,234 ****
timetz_hash(PyDateTime_TimeTZ *self)
{
! if (self->hashcode == -1) {
! PyObject *temp = timetz_getstate(self);
! if (temp != NULL) {
! self->hashcode = PyObject_Hash(temp);
! Py_DECREF(temp);
! }
}
return self->hashcode;
}
--- 224,254 ----
timetz_hash(PyDateTime_TimeTZ *self)
{
! long offset;
! int none;
!
! if (self->hashcode != -1)
! goto Done;
!
! self->hashcode = time_hash((PyDateTime_Time *)self);
! if (self->tzinfo == Py_None ||
! (self->hashcode == -1 && PyErr_Occurred()))
! goto Done;
!
! offset = get_utcoffset(self->tzinfo, (PyObject *)self, &none);
! if (offset == -1 && PyErr_Occurred()) {
! self->hashcode = -1;
! goto Done;
}
+ if (none) /* utcoffset returned None */
+ goto Done;
+
+ /* It doesn't really matter what we do now. Scrambling the bits
+ * a little based on the offset is as good as anything.
+ */
+ self->hashcode ^= offset * 1319;
+ if (self->hashcode == -1)
+ self->hashcode = -2;
+
+ Done:
return self->hashcode;
}