diff --git a/Objects/stringobject.c b/Objects/stringobject.c
index 86e0ea7..cb0e20b 100644
--- a/Objects/stringobject.c
+++ b/Objects/stringobject.c
@@ -3146,15 +3146,15 @@
 		return NULL;
 	}
 	orig_args = args;
-	fmt = PyString_AsString(format);
-	fmtcnt = PyString_Size(format);
+	fmt = PyString_AS_STRING(format);
+	fmtcnt = PyString_GET_SIZE(format);
 	reslen = rescnt = fmtcnt + 100;
 	result = PyString_FromStringAndSize((char *)NULL, reslen);
 	if (result == NULL)
 		return NULL;
 	res = PyString_AsString(result);
 	if (PyTuple_Check(args)) {
-		arglen = PyTuple_Size(args);
+		arglen = PyTuple_GET_SIZE(args);
 		argidx = 0;
 	}
 	else {
@@ -3170,7 +3170,7 @@
 				reslen += rescnt;
 				if (_PyString_Resize(&result, reslen) < 0)
 					return NULL;
-				res = PyString_AsString(result)
+				res = PyString_AS_STRING(result)
 					+ reslen - rescnt;
 				--rescnt;
 			}
@@ -3351,7 +3351,7 @@
 				}
 #endif
 				if (c == 's')
-				temp = PyObject_Str(v);
+					temp = PyObject_Str(v);
 				else
 					temp = PyObject_Repr(v);
 				if (temp == NULL)
@@ -3359,10 +3359,11 @@
 				if (!PyString_Check(temp)) {
 					PyErr_SetString(PyExc_TypeError,
 					  "%s argument has non-string str()");
+					Py_DECREF(temp);
 					goto error;
 				}
-				pbuf = PyString_AsString(temp);
-				len = PyString_Size(temp);
+				pbuf = PyString_AS_STRING(temp);
+				len = PyString_GET_SIZE(temp);
 				if (prec >= 0 && len > prec)
 					len = prec;
 				break;
@@ -3441,7 +3442,7 @@
 				reslen += rescnt;
 				if (_PyString_Resize(&result, reslen) < 0)
 					return NULL;
-				res = PyString_AsString(result)
+				res = PyString_AS_STRING(result)
 					+ reslen - rescnt;
 			}
 			if (sign) {
