Kaydet (Commit) 446f7ffa authored tarafından Alexandre Vassalotti's avatar Alexandre Vassalotti

Remove unnecessary copying in load_long().

üst aa069003
...@@ -2881,7 +2881,7 @@ static int ...@@ -2881,7 +2881,7 @@ static int
load_long(UnpicklerObject *self) load_long(UnpicklerObject *self)
{ {
PyObject *value; PyObject *value;
char *s, *ss; char *s;
Py_ssize_t len; Py_ssize_t len;
if ((len = unpickler_readline(self, &s)) < 0) if ((len = unpickler_readline(self, &s)) < 0)
...@@ -2894,17 +2894,9 @@ load_long(UnpicklerObject *self) ...@@ -2894,17 +2894,9 @@ load_long(UnpicklerObject *self)
compatibility with Python 3.0.0, we don't actually *require* compatibility with Python 3.0.0, we don't actually *require*
the 'L' to be present. */ the 'L' to be present. */
if (s[len-2] == 'L') { if (s[len-2] == 'L') {
ss = (char *)PyMem_Malloc(len-1); s[len-2] = '\0';
if (ss == NULL) {
PyErr_NoMemory();
return -1;
}
strncpy(ss, s, len-2);
ss[len-2] = '\0';
/* XXX: Should the base argument explicitly set to 10? */ /* XXX: Should the base argument explicitly set to 10? */
value = PyLong_FromString(ss, NULL, 0); value = PyLong_FromString(s, NULL, 0);
PyMem_Free(ss);
} }
else { else {
value = PyLong_FromString(s, NULL, 0); value = PyLong_FromString(s, NULL, 0);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment