@@ -1168,10 +1168,13 @@ _Pickler_New(PickleState *st)
11681168self -> reducer_override = NULL ;
11691169
11701170self -> memo = PyMemoTable_New ();
1171+ if (self -> memo == NULL ) {
1172+ Py_DECREF (self );
1173+ return NULL ;
1174+ }
11711175self -> output_buffer = PyBytes_FromStringAndSize (NULL ,
11721176self -> max_output_len );
1173-
1174- if (self -> memo == NULL || self -> output_buffer == NULL ) {
1177+ if (self -> output_buffer == NULL ) {
11751178Py_DECREF (self );
11761179return NULL ;
11771180 }
@@ -1654,9 +1657,12 @@ _Unpickler_New(PyObject *module)
16541657self -> memo_size = 32 ;
16551658self -> memo_len = 0 ;
16561659self -> memo = _Unpickler_NewMemo (self -> memo_size );
1660+ if (self -> memo == NULL ) {
1661+ Py_DECREF (self );
1662+ return NULL ;
1663+ }
16571664self -> stack = (Pdata * )Pdata_New (st );
1658-
1659- if (self -> memo == NULL || self -> stack == NULL ) {
1665+ if (self -> stack == NULL ) {
16601666Py_DECREF (self );
16611667return NULL ;
16621668 }
@@ -4834,11 +4840,12 @@ _pickle_PicklerMemoProxy_copy_impl(PicklerMemoProxyObject *self)
48344840PyObject * key ,* value ;
48354841
48364842key = PyLong_FromVoidPtr (entry .me_key );
4843+ if (key == NULL ) {
4844+ gotoerror ;
4845+ }
48374846value = 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 );
48424849 gotoerror ;
48434850 }
48444851status = PyDict_SetItem (new_memo ,key ,value );
@@ -5994,12 +6001,20 @@ load_stack_global(PickleState *st, UnpicklerObject *self)
59946001PyObject * global_name ;
59956002
59966003PDATA_POP (st ,self -> stack ,global_name );
6004+ if (global_name == NULL ) {
6005+ return -1 ;
6006+ }
59976007PDATA_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+ {
60006015PyErr_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 );
60036018return -1 ;
60046019 }
60056020global = find_class (self ,module_name ,global_name );