diff options
author | Victor Stinner <victor.stinner@haypocalc.com> | 2011-03-24 16:39:07 +0100 |
---|---|---|
committer | Victor Stinner <victor.stinner@haypocalc.com> | 2011-03-24 16:39:07 +0100 |
commit | 670f4ff38f263ce6e63cbc9de7b214cfc35d4c6a (patch) | |
tree | 5adaf0a4a0778569e70c636576f8ac65dfb10c75 /Python/marshal.c | |
parent | 3209890fc38bcc25ca4275a81406f44905ed74c7 (diff) | |
parent | f7d7a25e1b644b9a72be9a93aec67b9be4c1f375 (diff) | |
download | cpython-670f4ff38f263ce6e63cbc9de7b214cfc35d4c6a.tar.gz |
Merge 3.1
Diffstat (limited to 'Python/marshal.c')
-rw-r--r-- | Python/marshal.c | 24 |
1 files changed, 4 insertions, 20 deletions
diff --git a/Python/marshal.c b/Python/marshal.c index 21093eec45..73d4f374cd 100644 --- a/Python/marshal.c +++ b/Python/marshal.c @@ -254,7 +254,6 @@ w_object(PyObject *v, WFILE *p) PyMem_Free(buf); } } -#ifndef WITHOUT_COMPLEX else if (PyComplex_CheckExact(v)) { if (p->version > 1) { unsigned char buf[8]; @@ -297,7 +296,6 @@ w_object(PyObject *v, WFILE *p) PyMem_Free(buf); } } -#endif else if (PyBytes_CheckExact(v)) { w_byte(TYPE_STRING, p); n = PyBytes_GET_SIZE(v); @@ -714,7 +712,6 @@ r_object(RFILE *p) break; } -#ifndef WITHOUT_COMPLEX case TYPE_COMPLEX: { char buf[256]; @@ -773,7 +770,6 @@ r_object(RFILE *p) retval = PyComplex_FromCComplex(c); break; } -#endif case TYPE_STRING: n = r_long(p); @@ -1082,23 +1078,13 @@ getfilesize(FILE *fp) PyObject * PyMarshal_ReadLastObjectFromFile(FILE *fp) { -/* 75% of 2.1's .pyc files can exploit SMALL_FILE_LIMIT. - * REASONABLE_FILE_LIMIT is by defn something big enough for Tkinter.pyc. - */ -#define SMALL_FILE_LIMIT (1L << 14) +/* REASONABLE_FILE_LIMIT is by defn something big enough for Tkinter.pyc. */ #define REASONABLE_FILE_LIMIT (1L << 18) #ifdef HAVE_FSTAT off_t filesize; -#endif -#ifdef HAVE_FSTAT filesize = getfilesize(fp); - if (filesize > 0) { - char buf[SMALL_FILE_LIMIT]; - char* pBuf = NULL; - if (filesize <= SMALL_FILE_LIMIT) - pBuf = buf; - else if (filesize <= REASONABLE_FILE_LIMIT) - pBuf = (char *)PyMem_MALLOC(filesize); + if (filesize > 0 && filesize <= REASONABLE_FILE_LIMIT) { + char* pBuf = (char *)PyMem_MALLOC(filesize); if (pBuf != NULL) { PyObject* v; size_t n; @@ -1106,8 +1092,7 @@ PyMarshal_ReadLastObjectFromFile(FILE *fp) is smaller than REASONABLE_FILE_LIMIT */ n = fread(pBuf, 1, (int)filesize, fp); v = PyMarshal_ReadObjectFromString(pBuf, n); - if (pBuf != buf) - PyMem_FREE(pBuf); + PyMem_FREE(pBuf); return v; } @@ -1118,7 +1103,6 @@ PyMarshal_ReadLastObjectFromFile(FILE *fp) */ return PyMarshal_ReadObjectFromFile(fp); -#undef SMALL_FILE_LIMIT #undef REASONABLE_FILE_LIMIT } |