@@ -3191,6 +3191,7 @@ date_from_pickle(PyTypeObject *type, PyObject *state)
31913191 if (me != NULL ) {
31923192 const char * pdata = PyBytes_AS_STRING (state );
31933193 memcpy (& me -> data , pdata , _PyDateTime_DATE_DATASIZE );
3194+ me -> data .year = be16toh (me -> data .year );
31943195 me -> hashcode = -1 ;
31953196 }
31963197 return (PyObject * )me ;
@@ -3966,7 +3967,9 @@ static PyObject *
39663967date_getstate (PyDateTime_Date * self )
39673968{
39683969 PyObject * field ;
3969- field = PyBytes_FromStringAndSize ((char * )& self -> data ,
3970+ _PyDateTime_DateData tmp = self -> data ;
3971+ tmp .year = htobe16 (tmp .year );
3972+ field = PyBytes_FromStringAndSize ((char * )& tmp ,
39703973 _PyDateTime_DATE_DATASIZE );
39713974 return Py_BuildValue ("(N)" , field );
39723975}
@@ -4652,6 +4655,7 @@ time_from_pickle(PyTypeObject *type, PyObject *state, PyObject *tzinfo)
46524655 const char * pdata = PyBytes_AS_STRING (state );
46534656
46544657 memcpy (& me -> data , pdata , _PyDateTime_TIME_DATASIZE );
4658+ me -> data .microsecond = be32toh (me -> data .microsecond ) >> 8 ;
46554659 me -> hashcode = -1 ;
46564660 me -> hastzinfo = aware ;
46574661 if (aware ) {
@@ -5232,7 +5236,9 @@ time_getstate(PyDateTime_Time *self, int proto)
52325236 PyObject * basestate ;
52335237 PyObject * result = NULL ;
52345238
5235- basestate = PyBytes_FromStringAndSize ((char * )& self -> data ,
5239+ _PyDateTime_TimeData tmp = self -> data ;
5240+ tmp .microsecond = htobe32 (tmp .microsecond << 8 );
5241+ basestate = PyBytes_FromStringAndSize ((char * )& tmp ,
52365242 _PyDateTime_TIME_DATASIZE );
52375243 if (basestate != NULL ) {
52385244 if (proto > 3 && TIME_GET_FOLD (self ))
@@ -5428,6 +5434,8 @@ datetime_from_pickle(PyTypeObject *type, PyObject *state, PyObject *tzinfo)
54285434 const char * pdata = PyBytes_AS_STRING (state );
54295435
54305436 memcpy (& me -> data , pdata , _PyDateTime_DATETIME_DATASIZE );
5437+ me -> data .year = be16toh (me -> data .year );
5438+ me -> data .microsecond = be32toh (me -> data .microsecond ) >> 8 ;
54315439 me -> hashcode = -1 ;
54325440 me -> hastzinfo = aware ;
54335441 if (aware ) {
@@ -7154,7 +7162,10 @@ datetime_getstate(PyDateTime_DateTime *self, int proto)
71547162 PyObject * basestate ;
71557163 PyObject * result = NULL ;
71567164
7157- basestate = PyBytes_FromStringAndSize ((char * )& self -> data ,
7165+ _PyDateTime_DateTimeData tmp = self -> data ;
7166+ tmp .year = htobe16 (tmp .year );
7167+ tmp .microsecond = htobe32 (tmp .microsecond << 8 );
7168+ basestate = PyBytes_FromStringAndSize ((char * )& tmp ,
71587169 _PyDateTime_DATETIME_DATASIZE );
71597170 if (basestate != NULL ) {
71607171 if (proto > 3 && DATE_GET_FOLD (self ))
0 commit comments