Author: Ronan Lamy <ronan.l...@gmail.com> Branch: py3.5 Changeset: r94398:7ac5e33a8260 Date: 2018-04-20 23:33 +0100 http://bitbucket.org/pypy/pypy/changeset/7ac5e33a8260/
Log: Brute-force tp_basicsize to the correct value on the datetime types diff --git a/pypy/module/__pypy__/interp_pypydatetime.py b/pypy/module/__pypy__/interp_pypydatetime.py --- a/pypy/module/__pypy__/interp_pypydatetime.py +++ b/pypy/module/__pypy__/interp_pypydatetime.py @@ -5,7 +5,7 @@ def create_class(name): class W_Class(W_Root): - 'builtin base clasee for datetime.%s to allow interop with cpyext' % name + 'builtin base class for datetime.%s to allow interop with cpyext' % name def descr_new__(space, w_type): return space.allocate_instance(W_Class, w_type) diff --git a/pypy/module/cpyext/cdatetime.py b/pypy/module/cpyext/cdatetime.py --- a/pypy/module/cpyext/cdatetime.py +++ b/pypy/module/cpyext/cdatetime.py @@ -40,18 +40,26 @@ w_type = space.getattr(w_datetime, space.newtext("datetime")) datetimeAPI.c_DateTimeType = rffi.cast( PyTypeObjectPtr, make_ref(space, w_type)) + datetimeAPI.c_DateTimeType.c_tp_basicsize = rffi.sizeof( + cts.gettype('PyDateTime_DateTime')) w_type = space.getattr(w_datetime, space.newtext("time")) datetimeAPI.c_TimeType = rffi.cast( PyTypeObjectPtr, make_ref(space, w_type)) + datetimeAPI.c_TimeType.c_tp_basicsize = rffi.sizeof( + cts.gettype('PyDateTime_Time')) w_type = space.getattr(w_datetime, space.newtext("timedelta")) datetimeAPI.c_DeltaType = rffi.cast( PyTypeObjectPtr, make_ref(space, w_type)) + datetimeAPI.c_DeltaType.c_tp_basicsize = rffi.sizeof( + cts.gettype('PyDateTime_Delta')) w_type = space.getattr(w_datetime, space.newtext("tzinfo")) datetimeAPI.c_TZInfoType = rffi.cast( PyTypeObjectPtr, make_ref(space, w_type)) + datetimeAPI.c_TZInfoType.c_tp_basicsize = rffi.sizeof( + cts.gettype('PyDateTime_TZInfo')) datetimeAPI.c_Date_FromDate = llhelper( _PyDate_FromDate.api_func.functype, @@ -124,7 +132,7 @@ # app level datetime.date. If a c-extension class uses datetime.date for its # base class and defines a tp_dealloc, we will get this: # c_class->tp_dealloc == tp_dealloc_func - # c_class->tp_base == datetime.date, + # c_class->tp_base == datetime.date, # datetime.date->tp_dealloc = _PyPy_subtype_dealloc # datetime.date->tp_base = W_DateTime_Date # W_DateTime_Date->tp_dealloc = _PyPy_subtype_dealloc _______________________________________________ pypy-commit mailing list pypy-commit@python.org https://mail.python.org/mailman/listinfo/pypy-commit