@@ -1168,10 +1168,13 @@ _Pickler_New(PickleState *st)
1168
1168
self -> reducer_override = NULL ;
1169
1169
1170
1170
self -> memo = PyMemoTable_New ();
1171
+ if (self -> memo == NULL ) {
1172
+ Py_DECREF (self );
1173
+ return NULL ;
1174
+ }
1171
1175
self -> output_buffer = PyBytes_FromStringAndSize (NULL ,
1172
1176
self -> max_output_len );
1173
-
1174
- if (self -> memo == NULL || self -> output_buffer == NULL ) {
1177
+ if (self -> output_buffer == NULL ) {
1175
1178
Py_DECREF (self );
1176
1179
return NULL ;
1177
1180
}
@@ -1654,9 +1657,12 @@ _Unpickler_New(PyObject *module)
1654
1657
self -> memo_size = 32 ;
1655
1658
self -> memo_len = 0 ;
1656
1659
self -> memo = _Unpickler_NewMemo (self -> memo_size );
1660
+ if (self -> memo == NULL ) {
1661
+ Py_DECREF (self );
1662
+ return NULL ;
1663
+ }
1657
1664
self -> stack = (Pdata * )Pdata_New (st );
1658
-
1659
- if (self -> memo == NULL || self -> stack == NULL ) {
1665
+ if (self -> stack == NULL ) {
1660
1666
Py_DECREF (self );
1661
1667
return NULL ;
1662
1668
}
@@ -4828,11 +4834,12 @@ _pickle_PicklerMemoProxy_copy_impl(PicklerMemoProxyObject *self)
4828
4834
PyObject * key , * value ;
4829
4835
4830
4836
key = PyLong_FromVoidPtr (entry .me_key );
4837
+ if (key == NULL ) {
4838
+ goto error ;
4839
+ }
4831
4840
value = Py_BuildValue ("nO" , entry .me_value , entry .me_key );
4832
-
4833
- if (key == NULL || value == NULL ) {
4834
- Py_XDECREF (key );
4835
- Py_XDECREF (value );
4841
+ if (value == NULL ) {
4842
+ Py_DECREF (key );
4836
4843
goto error ;
4837
4844
}
4838
4845
status = PyDict_SetItem (new_memo , key , value );
@@ -5988,12 +5995,20 @@ load_stack_global(PickleState *st, UnpicklerObject *self)
5988
5995
PyObject * global_name ;
5989
5996
5990
5997
PDATA_POP (st , self -> stack , global_name );
5998
+ if (global_name == NULL ) {
5999
+ return -1 ;
6000
+ }
5991
6001
PDATA_POP (st , self -> stack , module_name );
5992
- if (module_name == NULL || !PyUnicode_CheckExact (module_name ) ||
5993
- global_name == NULL || !PyUnicode_CheckExact (global_name )) {
6002
+ if (module_name == NULL ) {
6003
+ Py_DECREF (global_name );
6004
+ return -1 ;
6005
+ }
6006
+ if (!PyUnicode_CheckExact (module_name ) ||
6007
+ !PyUnicode_CheckExact (global_name ))
6008
+ {
5994
6009
PyErr_SetString (st -> UnpicklingError , "STACK_GLOBAL requires str" );
5995
- Py_XDECREF (global_name );
5996
- Py_XDECREF (module_name );
6010
+ Py_DECREF (global_name );
6011
+ Py_DECREF (module_name );
5997
6012
return -1 ;
5998
6013
}
5999
6014
global = find_class (self , module_name , global_name );
0 commit comments