From 5e4e31f76a18e45d88a24ce7b6efc07e420d805b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kristj=C3=A1n=20Valur=20J=C3=B3nsson?= Date: Sat, 21 Apr 2007 12:46:49 +0000 Subject: [PATCH] Fix various minor issues discovered with static analysis using Visual Studio 2005 Team System. Removed obsolete comment, since .dll modules are no longer supported on windows, only .pyd. --- Modules/_ctypes/callproc.c | 5 +++-- Modules/binascii.c | 6 ++++-- Modules/cPickle.c | 19 ++++++++++++------- Modules/cStringIO.c | 16 ++++++++++++---- Modules/posixmodule.c | 7 ++++--- PC/_winreg.c | 2 +- Python/dynload_win.c | 8 -------- Python/thread_nt.h | 6 +++--- 8 files changed, 39 insertions(+), 30 deletions(-) diff --git a/Modules/_ctypes/callproc.c b/Modules/_ctypes/callproc.c index e0765e917cb..738ed2f79dc 100644 --- a/Modules/_ctypes/callproc.c +++ b/Modules/_ctypes/callproc.c @@ -64,6 +64,7 @@ #ifdef MS_WIN32 #include +#include #else #include "ctypes_dlfcn.h" #endif @@ -97,9 +98,9 @@ static TCHAR *FormatError(DWORD code) 0, NULL); if (n) { - while (isspace(lpMsgBuf[n-1])) + while (_istspace(lpMsgBuf[n-1])) --n; - lpMsgBuf[n] = '\0'; /* rstrip() */ + lpMsgBuf[n] = _T('\0'); /* rstrip() */ } return lpMsgBuf; } diff --git a/Modules/binascii.c b/Modules/binascii.c index 4dee45198ef..5e0f86dc131 100644 --- a/Modules/binascii.c +++ b/Modules/binascii.c @@ -1165,7 +1165,8 @@ binascii_b2a_qp (PyObject *self, PyObject *args, PyObject *kwargs) ((data[in] == '\t' || data[in] == ' ') && (in + 1 == datalen)) || ((data[in] < 33) && (data[in] != '\r') && (data[in] != '\n') && - (quotetabs && ((data[in] != '\t') || (data[in] != ' '))))) + (!quotetabs || + (quotetabs && ((data[in] != '\t') && (data[in] != ' ')))))) { if ((linelen + 3) >= MAXLINESIZE) { linelen = 0; @@ -1235,7 +1236,8 @@ binascii_b2a_qp (PyObject *self, PyObject *args, PyObject *kwargs) ((data[in] == '\t' || data[in] == ' ') && (in + 1 == datalen)) || ((data[in] < 33) && (data[in] != '\r') && (data[in] != '\n') && - (quotetabs && ((data[in] != '\t') || (data[in] != ' '))))) + (!quotetabs || + (quotetabs && ((data[in] != '\t') && (data[in] != ' ')))))) { if ((linelen + 3 )>= MAXLINESIZE) { odata[out++] = '='; diff --git a/Modules/cPickle.c b/Modules/cPickle.c index 4f7d1f198af..dd9887b525a 100644 --- a/Modules/cPickle.c +++ b/Modules/cPickle.c @@ -533,11 +533,12 @@ read_file(Unpicklerobject *self, char **s, Py_ssize_t n) self->buf_size = size; } else if (n > self->buf_size) { - self->buf = (char *)realloc(self->buf, n); - if (!self->buf) { + char *newbuf = (char *)realloc(self->buf, n); + if (!newbuf) { PyErr_NoMemory(); return -1; } + self->buf = newbuf; self->buf_size = n; } @@ -576,6 +577,7 @@ readline_file(Unpicklerobject *self, char **s) i = 0; while (1) { int bigger; + char *newbuf; for (; i < (self->buf_size - 1); i++) { if (feof(self->fp) || (self->buf[i] = getc(self->fp)) == '\n') { @@ -589,11 +591,12 @@ readline_file(Unpicklerobject *self, char **s) PyErr_NoMemory(); return -1; } - self->buf = (char *)realloc(self->buf, bigger); - if (!self->buf) { + newbuf = (char *)realloc(self->buf, bigger); + if (!newbuf) { PyErr_NoMemory(); return -1; } + self->buf = newbuf; self->buf_size = bigger; } } @@ -4365,17 +4368,19 @@ load_mark(Unpicklerobject *self) */ if ((self->num_marks + 1) >= self->marks_size) { + int *marks; s=self->marks_size+20; if (s <= self->num_marks) s=self->num_marks + 1; if (self->marks == NULL) - self->marks=(int *)malloc(s * sizeof(int)); + marks=(int *)malloc(s * sizeof(int)); else - self->marks=(int *)realloc(self->marks, + marks=(int *)realloc(self->marks, s * sizeof(int)); - if (! self->marks) { + if (!marks) { PyErr_NoMemory(); return -1; } + self->marks = marks; self->marks_size = s; } diff --git a/Modules/cStringIO.c b/Modules/cStringIO.c index 100891ba4ad..06bc6cbae36 100644 --- a/Modules/cStringIO.c +++ b/Modules/cStringIO.c @@ -339,13 +339,17 @@ O_seek(Oobject *self, PyObject *args) { } if (position > self->buf_size) { + char *newbuf; self->buf_size*=2; if (self->buf_size <= position) self->buf_size=position+1; - self->buf = (char*) realloc(self->buf,self->buf_size); - if (!self->buf) { + newbuf = (char*) realloc(self->buf,self->buf_size); + if (!newbuf) { + free(self->buf); + self->buf = 0; self->buf_size=self->pos=0; return PyErr_NoMemory(); } + self->buf = newbuf; } else if (position < 0) position=0; @@ -366,6 +370,7 @@ static int O_cwrite(PyObject *self, const char *c, Py_ssize_t l) { Py_ssize_t newl; Oobject *oself; + char *newbuf; if (!IO__opencheck(IOOOBJECT(self))) return -1; oself = (Oobject *)self; @@ -377,12 +382,15 @@ O_cwrite(PyObject *self, const char *c, Py_ssize_t l) { assert(newl + 1 < INT_MAX); oself->buf_size = (int)(newl+1); } - oself->buf = (char*)realloc(oself->buf, oself->buf_size); - if (!oself->buf) { + newbuf = (char*)realloc(oself->buf, oself->buf_size); + if (!newbuf) { PyErr_SetString(PyExc_MemoryError,"out of memory"); + free(oself->buf); + oself->buf = 0; oself->buf_size = oself->pos = 0; return -1; } + oself->buf = newbuf; } memcpy(oself->buf+oself->pos,c,l); diff --git a/Modules/posixmodule.c b/Modules/posixmodule.c index 958fb63d316..158b12e2eeb 100644 --- a/Modules/posixmodule.c +++ b/Modules/posixmodule.c @@ -4788,18 +4788,19 @@ _PyPopenCreateProcess(char *cmdstring, (sizeof(modulepath)/sizeof(modulepath[0])) -strlen(modulepath)); if (stat(modulepath, &statinfo) != 0) { + size_t mplen = sizeof(modulepath)/sizeof(modulepath[0]); /* Eeek - file-not-found - possibly an embedding situation - see if we can locate it in sys.prefix */ strncpy(modulepath, Py_GetExecPrefix(), - sizeof(modulepath)/sizeof(modulepath[0])); + mplen); + modulepath[mplen-1] = '\0'; if (modulepath[strlen(modulepath)-1] != '\\') strcat(modulepath, "\\"); strncat(modulepath, szConsoleSpawn, - (sizeof(modulepath)/sizeof(modulepath[0])) - -strlen(modulepath)); + mplen-strlen(modulepath)); /* No where else to look - raise an easily identifiable error, rather than leaving Windows to report "file not found" - as the user is probably blissfully diff --git a/PC/_winreg.c b/PC/_winreg.c index b39411a8ca9..782761b654b 100644 --- a/PC/_winreg.c +++ b/PC/_winreg.c @@ -699,7 +699,7 @@ Py2Reg(PyObject *value, DWORD typ, BYTE **retDataBuf, DWORD *retDataSize) case REG_DWORD: if (value != Py_None && !PyInt_Check(value)) return FALSE; - *retDataBuf = (BYTE *)PyMem_NEW(DWORD, sizeof(DWORD)); + *retDataBuf = (BYTE *)PyMem_NEW(DWORD, 1); if (*retDataBuf==NULL){ PyErr_NoMemory(); return FALSE; diff --git a/Python/dynload_win.c b/Python/dynload_win.c index 37d6d2ee385..1c3b3ab0c8d 100644 --- a/Python/dynload_win.c +++ b/Python/dynload_win.c @@ -13,16 +13,8 @@ const struct filedescr _PyImport_DynLoadFiletab[] = { #ifdef _DEBUG {"_d.pyd", "rb", C_EXTENSION}, - /* Temporarily disable .dll, to avoid conflicts between sqlite3.dll - and the sqlite3 package. If this needs to be reverted for 2.5, - some other solution for the naming conflict must be found. - {"_d.dll", "rb", C_EXTENSION}, - */ #else {".pyd", "rb", C_EXTENSION}, - /* Likewise - {".dll", "rb", C_EXTENSION}, - */ #endif {0, 0} }; diff --git a/Python/thread_nt.h b/Python/thread_nt.h index 67f5ed51747..27fca72cd88 100644 --- a/Python/thread_nt.h +++ b/Python/thread_nt.h @@ -202,12 +202,12 @@ PyThread_start_new_thread(void (*func)(void *), void *arg) * too many threads". */ dprintf(("%ld: PyThread_start_new_thread failed: %p errno %d\n", - PyThread_get_thread_ident(), rv, errno)); + PyThread_get_thread_ident(), (void*)rv, errno)); obj.id = -1; } else { dprintf(("%ld: PyThread_start_new_thread succeeded: %p\n", - PyThread_get_thread_ident(), rv)); + PyThread_get_thread_ident(), (void*)rv)); /* wait for thread to initialize, so we can get its id */ WaitForSingleObject(obj.done, INFINITE); assert(obj.id != -1); @@ -333,7 +333,7 @@ PyThread_release_lock(PyThread_type_lock aLock) dprintf(("%ld: PyThread_release_lock(%p) called\n", PyThread_get_thread_ident(),aLock)); if (!(aLock && LeaveNonRecursiveMutex((PNRMUTEX) aLock))) - dprintf(("%ld: Could not PyThread_release_lock(%p) error: %l\n", PyThread_get_thread_ident(), aLock, GetLastError())); + dprintf(("%ld: Could not PyThread_release_lock(%p) error: %ld\n", PyThread_get_thread_ident(), aLock, GetLastError())); } /* minimum/maximum thread stack sizes supported */