@@ -45,7 +45,6 @@ PyCStgDict_dealloc(StgDictObject *self)
4545 PyCStgDict_clear (self );
4646 PyMem_Free (self -> format );
4747 PyMem_Free (self -> shape );
48- PyMem_Free (self -> strides );
4948 PyMem_Free (self -> ffi_type_pointer .elements );
5049 PyDict_Type .tp_dealloc ((PyObject * )self );
5150}
@@ -77,7 +76,6 @@ PyCStgDict_clone(StgDictObject *dst, StgDictObject *src)
7776 dst -> format = NULL ;
7877 PyMem_Free (dst -> shape );
7978 dst -> shape = NULL ;
80- PyMem_Free (dst -> strides );
8179 dst -> strides = NULL ;
8280 dst -> ffi_type_pointer .elements = NULL ;
8381
@@ -102,22 +100,18 @@ PyCStgDict_clone(StgDictObject *dst, StgDictObject *src)
102100 strcpy (dst -> format , src -> format );
103101 }
104102 if (src -> shape ) {
105- dst -> shape = PyMem_Malloc (sizeof (Py_ssize_t ) * src -> ndim );
103+ dst -> shape = PyMem_Malloc (sizeof (Py_ssize_t ) * src -> ndim * 2 );
106104 if (dst -> shape == NULL ) {
107105 PyErr_NoMemory ();
108106 return -1 ;
109107 }
110108 memcpy (dst -> shape , src -> shape ,
111109 sizeof (Py_ssize_t ) * src -> ndim );
112- }
113- if (src -> strides ) {
114- dst -> strides = PyMem_Malloc (sizeof (Py_ssize_t ) * src -> ndim );
115- if (dst -> strides == NULL ) {
116- PyErr_NoMemory ();
117- return -1 ;
110+ if (src -> strides ) {
111+ dst -> strides = dst -> shape + src -> ndim ;
112+ memcpy (dst -> strides , src -> strides ,
113+ sizeof (Py_ssize_t ) * src -> ndim );
118114 }
119- memcpy (dst -> strides , src -> strides ,
120- sizeof (Py_ssize_t ) * src -> ndim );
121115 }
122116
123117 if (src -> ffi_type_pointer .elements == NULL )
0 commit comments