@@ -26,6 +26,7 @@ Create a new memoryview object which references the given object.");
2626PyObject *
2727PyMemoryView_FromMemory (PyBuffer * info )
2828{
29+ /* XXX(nnorwitz): need to implement something here? */
2930 return NULL ;
3031}
3132
@@ -59,7 +60,7 @@ static PyObject *
5960memory_new (PyTypeObject * subtype , PyObject * args , PyObject * kwds )
6061{
6162 PyObject * obj ;
62- if (!PyArg_ParseTuple (args , "O" , & obj )) return NULL ;
63+ if (!PyArg_UnpackTuple (args , "memoryview" , 1 , 1 , & obj )) return NULL ;
6364
6465 return PyMemoryView_FromObject (obj );
6566}
@@ -136,6 +137,7 @@ _indirect_copy_nd(char *dest, PyBuffer *view, char fort)
136137 void (* func )(int , Py_ssize_t * , Py_ssize_t * );
137138
138139
140+ /* XXX(nnorwitz): need to check for overflow! */
139141 indices = (Py_ssize_t * )PyMem_Malloc (sizeof (Py_ssize_t )* view -> ndim );
140142 if (indices == NULL ) {
141143 PyErr_NoMemory ();
@@ -260,6 +262,7 @@ PyMemoryView_GetContiguous(PyObject *obj, int buffertype, char fort)
260262 /* return a shadowed memory-view object */
261263 view -> buf = dest ;
262264 mem -> base = PyTuple_Pack (2 , obj , bytes );
265+ /* XXX(nnorwitz): need to verify alloc was successful. */
263266 Py_DECREF (bytes );
264267 }
265268 else {
@@ -373,34 +376,31 @@ static PyGetSetDef memory_getsetlist[] ={
373376
374377
375378static PyObject *
376- memory_tobytes (PyMemoryViewObject * mem , PyObject * args )
379+ memory_tobytes (PyMemoryViewObject * mem , PyObject * noargs )
377380{
378- if (!PyArg_ParseTuple (args , "" )) return NULL ;
379381 /* Create new Bytes object for data */
380382 return PyBytes_FromObject ((PyObject * )mem );
381383}
382384
383385static PyObject *
384- memory_tolist (PyMemoryViewObject * mem , PyObject * args )
386+ memory_tolist (PyMemoryViewObject * mem , PyObject * noargs )
385387{
386- if (!PyArg_ParseTuple (args , "" )) return NULL ;
387388 Py_INCREF (Py_NotImplemented );
388389 return Py_NotImplemented ;
389390}
390391
391392
392393
393394static PyMethodDef memory_methods [] = {
394- {"tobytes" , (PyCFunction )memory_tobytes , 1 , NULL },
395- {"tolist" , (PyCFunction )memory_tolist , 1 , NULL },
395+ {"tobytes" , (PyCFunction )memory_tobytes , METH_NOARGS , NULL },
396+ {"tolist" , (PyCFunction )memory_tolist , METH_NOARGS , NULL },
396397 {NULL , NULL } /* sentinel */
397398};
398399
399400
400401static void
401402memory_dealloc (PyMemoryViewObject * self )
402403{
403-
404404 if (PyTuple_Check (self -> base )) {
405405 /* Special case when first element is generic object
406406 with buffer interface and the second element is a
@@ -423,21 +423,18 @@ memory_dealloc(PyMemoryViewObject *self)
423423 else {
424424 PyObject_ReleaseBuffer (self -> base , & (self -> view ));
425425 }
426- Py_DECREF (self -> base );
426+ Py_CLEAR (self -> base );
427427 PyObject_DEL (self );
428428}
429429
430430static PyObject *
431431memory_repr (PyMemoryViewObject * self )
432432{
433-
434- if ( self -> base == NULL )
435- return PyUnicode_FromFormat ("<memory at %p>" ,
436- self );
433+ /* XXX(nnorwitz): the code should be different or remove condition. */
434+ if (self -> base == NULL )
435+ return PyUnicode_FromFormat ("<memory at %p>" , self );
437436 else
438- return PyUnicode_FromFormat (
439- "<memory at %p>" ,
440- self );
437+ return PyUnicode_FromFormat ("<memory at %p>" , self );
441438}
442439
443440
0 commit comments