@@ -650,8 +650,8 @@ typedef struct UnpicklerObject {
650
650
/* The unpickler memo is just an array of PyObject *s. Using a dict
651
651
is unnecessary, since the keys are contiguous ints. */
652
652
PyObject * * memo ;
653
- Py_ssize_t memo_size ; /* Capacity of the memo array */
654
- Py_ssize_t memo_len ; /* Number of objects in the memo */
653
+ size_t memo_size ; /* Capacity of the memo array */
654
+ size_t memo_len ; /* Number of objects in the memo */
655
655
656
656
PyObject * pers_func ; /* persistent_load() method, can be NULL. */
657
657
PyObject * pers_func_self ; /* borrowed reference to self if pers_func
@@ -821,22 +821,18 @@ _PyMemoTable_Lookup(PyMemoTable *self, PyObject *key)
821
821
822
822
/* Returns -1 on failure, 0 on success. */
823
823
static int
824
- _PyMemoTable_ResizeTable (PyMemoTable * self , Py_ssize_t min_size )
824
+ _PyMemoTable_ResizeTable (PyMemoTable * self , size_t min_size )
825
825
{
826
826
PyMemoEntry * oldtable = NULL ;
827
827
PyMemoEntry * oldentry , * newentry ;
828
- Py_ssize_t new_size = MT_MINSIZE ;
828
+ size_t new_size = MT_MINSIZE ;
829
829
Py_ssize_t to_process ;
830
830
831
831
assert (min_size > 0 );
832
832
833
833
/* Find the smallest valid table size >= min_size. */
834
- while (new_size < min_size && new_size > 0 )
834
+ while (new_size < min_size )
835
835
new_size <<= 1 ;
836
- if (new_size <= 0 ) {
837
- PyErr_NoMemory ();
838
- return -1 ;
839
- }
840
836
/* new_size needs to be a power of two. */
841
837
assert ((new_size & (new_size - 1 )) == 0 );
842
838
@@ -1376,9 +1372,9 @@ _Unpickler_Readline(UnpicklerObject *self, char **result)
1376
1372
/* Returns -1 (with an exception set) on failure, 0 on success. The memo array
1377
1373
will be modified in place. */
1378
1374
static int
1379
- _Unpickler_ResizeMemoList (UnpicklerObject * self , Py_ssize_t new_size )
1375
+ _Unpickler_ResizeMemoList (UnpicklerObject * self , size_t new_size )
1380
1376
{
1381
- Py_ssize_t i ;
1377
+ size_t i ;
1382
1378
1383
1379
assert (new_size > self -> memo_size );
1384
1380
@@ -1397,9 +1393,9 @@ _Unpickler_ResizeMemoList(UnpicklerObject *self, Py_ssize_t new_size)
1397
1393
1398
1394
/* Returns NULL if idx is out of bounds. */
1399
1395
static PyObject *
1400
- _Unpickler_MemoGet (UnpicklerObject * self , Py_ssize_t idx )
1396
+ _Unpickler_MemoGet (UnpicklerObject * self , size_t idx )
1401
1397
{
1402
- if (idx < 0 || idx >= self -> memo_size )
1398
+ if (idx >= self -> memo_size )
1403
1399
return NULL ;
1404
1400
1405
1401
return self -> memo [idx ];
@@ -1408,7 +1404,7 @@ _Unpickler_MemoGet(UnpicklerObject *self, Py_ssize_t idx)
1408
1404
/* Returns -1 (with an exception set) on failure, 0 on success.
1409
1405
This takes its own reference to `value`. */
1410
1406
static int
1411
- _Unpickler_MemoPut (UnpicklerObject * self , Py_ssize_t idx , PyObject * value )
1407
+ _Unpickler_MemoPut (UnpicklerObject * self , size_t idx , PyObject * value )
1412
1408
{
1413
1409
PyObject * old_item ;
1414
1410
@@ -6843,7 +6839,7 @@ static PyObject *
6843
6839
_pickle_UnpicklerMemoProxy_copy_impl (UnpicklerMemoProxyObject * self )
6844
6840
/*[clinic end generated code: output=e12af7e9bc1e4c77 input=97769247ce032c1d]*/
6845
6841
{
6846
- Py_ssize_t i ;
6842
+ size_t i ;
6847
6843
PyObject * new_memo = PyDict_New ();
6848
6844
if (new_memo == NULL )
6849
6845
return NULL ;
@@ -6994,8 +6990,8 @@ static int
6994
6990
Unpickler_set_memo (UnpicklerObject * self , PyObject * obj )
6995
6991
{
6996
6992
PyObject * * new_memo ;
6997
- Py_ssize_t new_memo_size = 0 ;
6998
- Py_ssize_t i ;
6993
+ size_t new_memo_size = 0 ;
6994
+ size_t i ;
6999
6995
7000
6996
if (obj == NULL ) {
7001
6997
PyErr_SetString (PyExc_TypeError ,
@@ -7061,7 +7057,7 @@ Unpickler_set_memo(UnpicklerObject *self, PyObject *obj)
7061
7057
error :
7062
7058
if (new_memo_size ) {
7063
7059
i = new_memo_size ;
7064
- while ( -- i >= 0 ) {
7060
+ for ( i = new_memo_size - 1 ; i != SIZE_MAX ; i -- ) {
7065
7061
Py_XDECREF (new_memo [i ]);
7066
7062
}
7067
7063
PyMem_FREE (new_memo );
0 commit comments