Fix two refcounting bugs
diff --git a/Objects/unicodeobject.c b/Objects/unicodeobject.c
index dfeabf5..6a358da 100644
--- a/Objects/unicodeobject.c
+++ b/Objects/unicodeobject.c
@@ -3256,6 +3256,7 @@
Py_XDECREF(x);
goto onError;
}
+ Py_XDECREF(x);
if (x!=Py_None) /* it worked => adjust input pointer */
++p;
else { /* untranslatable character */
@@ -3268,7 +3269,6 @@
const Py_UNICODE *collend = p+1;
const Py_UNICODE *coll;
- Py_XDECREF(x);
/* find all untranslatable characters */
while (collend < endp) {
if (charmaptranslate_lookup(*collend, mapping, &x))
@@ -5398,8 +5398,10 @@
if (str1 == NULL)
return NULL;
str2 = (PyUnicodeObject *)PyUnicode_FromObject((PyObject *)str2);
- if (str2 == NULL)
+ if (str2 == NULL) {
+ Py_DECREF(str1);
return NULL;
+ }
result = replace(self, str1, str2, maxcount);