@@ -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
}
@@ -4834,11 +4840,12 @@ _pickle_PicklerMemoProxy_copy_impl(PicklerMemoProxyObject *self)
4834
4840
PyObject * key , * value ;
4835
4841
4836
4842
key = PyLong_FromVoidPtr (entry .me_key );
4843
+ if (key == NULL ) {
4844
+ goto error ;
4845
+ }
4837
4846
value = Py_BuildValue ("nO" , entry .me_value , entry .me_key );
4838
-
4839
- if (key == NULL || value == NULL ) {
4840
- Py_XDECREF (key );
4841
- Py_XDECREF (value );
4847
+ if (value == NULL ) {
4848
+ Py_DECREF (key );
4842
4849
goto error ;
4843
4850
}
4844
4851
status = PyDict_SetItem (new_memo , key , value );
@@ -5994,12 +6001,20 @@ load_stack_global(PickleState *st, UnpicklerObject *self)
5994
6001
PyObject * global_name ;
5995
6002
5996
6003
PDATA_POP (st , self -> stack , global_name );
6004
+ if (global_name == NULL ) {
6005
+ return -1 ;
6006
+ }
5997
6007
PDATA_POP (st , self -> stack , module_name );
5998
- if (module_name == NULL || !PyUnicode_CheckExact (module_name ) ||
5999
- global_name == NULL || !PyUnicode_CheckExact (global_name )) {
6008
+ if (module_name == NULL ) {
6009
+ Py_DECREF (global_name );
6010
+ return -1 ;
6011
+ }
6012
+ if (!PyUnicode_CheckExact (module_name ) ||
6013
+ !PyUnicode_CheckExact (global_name ))
6014
+ {
6000
6015
PyErr_SetString (st -> UnpicklingError , "STACK_GLOBAL requires str" );
6001
- Py_XDECREF (global_name );
6002
- Py_XDECREF (module_name );
6016
+ Py_DECREF (global_name );
6017
+ Py_DECREF (module_name );
6003
6018
return -1 ;
6004
6019
}
6005
6020
global = find_class (self , module_name , global_name );
0 commit comments