From: Alexandre Vassalotti Date: Fri, 23 Jan 2009 04:43:46 +0000 (+0000) Subject: Remove unnecessary copying in load_long(). X-Git-Tag: v3.1a1~424 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=446f7ffa0ff7b89f4ee8f74d4ea7183c8072ecba;p=python Remove unnecessary copying in load_long(). --- diff --git a/Modules/_pickle.c b/Modules/_pickle.c index 02a3e447d9..435969d676 100644 --- a/Modules/_pickle.c +++ b/Modules/_pickle.c @@ -2881,7 +2881,7 @@ static int load_long(UnpicklerObject *self) { PyObject *value; - char *s, *ss; + char *s; Py_ssize_t len; if ((len = unpickler_readline(self, &s)) < 0) @@ -2894,17 +2894,9 @@ load_long(UnpicklerObject *self) compatibility with Python 3.0.0, we don't actually *require* the 'L' to be present. */ if (s[len-2] == 'L') { - ss = (char *)PyMem_Malloc(len-1); - if (ss == NULL) { - PyErr_NoMemory(); - return -1; - } - strncpy(ss, s, len-2); - ss[len-2] = '\0'; - + s[len-2] = '\0'; /* XXX: Should the base argument explicitly set to 10? */ - value = PyLong_FromString(ss, NULL, 0); - PyMem_Free(ss); + value = PyLong_FromString(s, NULL, 0); } else { value = PyLong_FromString(s, NULL, 0);