@@ -340,6 +340,8 @@ Reader_read(Reader *self, PyObject *args, PyObject *kwds)
340
340
341
341
/* create empty list */
342
342
list = PyList_New (0 );
343
+ if (list == NULL )
344
+ return PyErr_NoMemory ();
343
345
344
346
while (TMR_hasMoreTags (& self -> reader ) == TMR_SUCCESS )
345
347
{
@@ -350,7 +352,16 @@ Reader_read(Reader *self, PyObject *args, PyObject *kwds)
350
352
uint8_t dataBuf4 [MAX_DATA_AREA ];
351
353
352
354
tag = PyObject_New (TagReadData , & TagReadDataType );
355
+ if (tag == NULL )
356
+ {
357
+ Py_XDECREF (list );
358
+ return PyErr_NoMemory ();
359
+ }
353
360
TMR_TRD_init (& tag -> data );
361
+ tag -> epcMemData = NULL ;
362
+ tag -> tidMemData = NULL ;
363
+ tag -> userMemData = NULL ;
364
+ tag -> reservedMemData = NULL ;
354
365
355
366
TMR_TRD_MEMBANK_init_data (& tag -> data .epcMemData , MAX_DATA_AREA , dataBuf1 );
356
367
TMR_TRD_MEMBANK_init_data (& tag -> data .tidMemData , MAX_DATA_AREA , dataBuf2 );
@@ -360,6 +371,8 @@ Reader_read(Reader *self, PyObject *args, PyObject *kwds)
360
371
if ((ret = TMR_getNextTag (& self -> reader , & tag -> data )) != TMR_SUCCESS )
361
372
{
362
373
PyErr_SetString (PyExc_RuntimeError , TMR_strerr (& self -> reader , ret ));
374
+ Py_XDECREF (tag );
375
+ Py_XDECREF (list );
363
376
return NULL ;
364
377
}
365
378
@@ -435,6 +448,10 @@ invoke_read_callback(TMR_Reader *reader, const TMR_TagReadData *pdata, void *coo
435
448
tag = PyObject_New (TagReadData , & TagReadDataType );
436
449
/* make a hard-copy */
437
450
memcpy (& tag -> data , pdata , sizeof (TMR_TagReadData ));
451
+ tag -> epcMemData = NULL ;
452
+ tag -> tidMemData = NULL ;
453
+ tag -> userMemData = NULL ;
454
+ tag -> reservedMemData = NULL ;
438
455
439
456
arglist = Py_BuildValue ("(O)" , tag );
440
457
result = PyObject_CallObject (self -> readCallback , arglist );
@@ -645,6 +662,8 @@ Reader_get_supported_regions(Reader* self)
645
662
646
663
/* create empty list */
647
664
list = PyList_New (0 );
665
+ if (list == NULL )
666
+ return PyErr_NoMemory ();
648
667
649
668
for (i = 0 ; i < regions .len ; i ++ )
650
669
{
@@ -713,6 +732,9 @@ get_uint8List(TMR_Reader *reader, int param, size_t max)
713
732
}
714
733
715
734
result = PyList_New (values .len );
735
+ if (result == NULL )
736
+ return PyErr_NoMemory ();
737
+
716
738
for (i = 0 ; i < values .len ; i ++ )
717
739
PyList_SetItem (result , i , PyLong_FromUnsignedLong (values .list [i ]));
718
740
@@ -740,6 +762,9 @@ get_uint32List(TMR_Reader *reader, int param, size_t max)
740
762
}
741
763
742
764
result = PyList_New (values .len );
765
+ if (result == NULL )
766
+ return PyErr_NoMemory ();
767
+
743
768
for (i = 0 ; i < values .len ; i ++ )
744
769
PyList_SetItem (result , i , PyLong_FromUnsignedLong (values .list [i ]));
745
770
0 commit comments