tests.
}
else {
char *s = PyString_AsString(prog);
- if ((int)strlen(s) != PyString_Size(prog)) {
+ if (strlen(s) != (size_t)PyString_Size(prog)) {
PyErr_SetString(PyExc_ValueError,
"embedded '\\0' in exec string");
return -1;
PyObject *normalizestring(const char *string)
{
register int i;
- int len = strlen(string);
+ size_t len = strlen(string);
char *p;
PyObject *v;
- v = PyString_FromStringAndSize(NULL, len);
+ if (len > INT_MAX) {
+ PyErr_SetString(PyExc_OverflowError, "string is too large");
+ return NULL;
+ }
+
+ v = PyString_FromStringAndSize(NULL, (int)len);
if (v == NULL)
return NULL;
p = PyString_AS_STRING(v);
if (!PyString_Check(v))
continue;
p = PyString_AsString(v);
- if ((int)strspn(p, NAME_CHARS)
- != PyString_Size(v))
+ if (strspn(p, NAME_CHARS)
+ != (size_t)PyString_Size(v))
continue;
PyString_InternInPlace(&PyTuple_GET_ITEM(consts, i));
}
PyObject *exc;
char *msg;
{
- int n = strlen(msg);
+ size_t n = strlen(msg);
PyObject *v;
char buffer[30];
char *s;
struct compiling *c;
char *name;
char *buffer;
- int maxlen;
+ size_t maxlen;
{
/* Name mangling: __private becomes _classname__private.
This is independent from how the name is used. */
char *p;
- int nlen, plen;
+ size_t nlen, plen;
nlen = strlen(name);
if (nlen+2 >= maxlen)
return 0; /* Don't mangle __extremely_long_names */
char buffer[256];
if (name != NULL && name[0] == '_' && name[1] == '_' &&
c->c_private != NULL &&
- com_mangle(c, name, buffer, (int)sizeof(buffer)))
+ com_mangle(c, name, buffer, sizeof(buffer)))
name = buffer;
#endif
if (name == NULL || (v = PyString_InternFromString(name)) == NULL) {
char *s;
{
PyObject *v;
- int len;
+ size_t len;
char *buf;
char *p;
char *end;
}
s++;
len = strlen(s);
+ if (len > INT_MAX) {
+ PyErr_SetString(PyExc_OverflowError, "string to parse is too long");
+ return NULL;
+ }
if (s[--len] != quote) {
PyErr_BadInternalCall();
return NULL;
char buffer[256];
if (s != NULL && s[0] == '_' && s[1] == '_' &&
c->c_private != NULL &&
- com_mangle(c, s, buffer, (int)sizeof(buffer)))
+ com_mangle(c, s, buffer, sizeof(buffer)))
s = buffer;
#endif
if (PyDict_GetItemString(c->c_locals, s) != NULL) {
"DLL load failed with error code %d",
errorCode);
} else {
- int len;
+ size_t len;
/* For some reason a \r\n
is appended to the text */
if (theLength >= 2 &&
return NULL;
}
ret = getwd(localbuf);
- if (ret != NULL && strlen(localbuf) >= size) {
+ if (ret != NULL && strlen(localbuf) >= (size_t)size) {
errno = ERANGE;
return NULL;
}
Py_INCREF(v);
}
else {
- if (n < 0)
- n = strlen(str);
+ if (n < 0) {
+ size_t m = strlen(str);
+ if (m > INT_MAX) {
+ PyErr_SetString(PyExc_OverflowError,
+ "string too long for Python string");
+ return NULL;
+ }
+ n = (int)m;
+ }
v = PyString_FromStringAndSize(str, n);
}
return v;
Py_XDECREF(v);
#ifdef MS_COREDLL
PyDict_SetItemString(sysdict, "dllhandle",
- v = PyInt_FromLong((int)PyWin_DLLhModule));
+ v = PyLong_FromVoidPtr(PyWin_DLLhModule));
Py_XDECREF(v);
PyDict_SetItemString(sysdict, "winver",
v = PyString_FromString(PyWin_DLLVersionString));
return mutex->hevent != NULL ; /* TRUE if the mutex is created */
}
+#ifdef InterlockedCompareExchange
+#undef InterlockedCompareExchange
+#endif
#define InterlockedCompareExchange(dest,exchange,comperand) (ixchg((dest), (exchange), (comperand)))
VOID DeleteNonRecursiveMutex(PNRMUTEX mutex)
*/
int PyThread_start_new_thread(void (*func)(void *), void *arg)
{
- long rv;
+ INT_PTR rv;
int success = 0;
dprintf(("%ld: PyThread_start_new_thread called\n", PyThread_get_thread_ident()));
if (rv != -1) {
success = 1;
- dprintf(("%ld: PyThread_start_new_thread succeeded: %ld\n", PyThread_get_thread_ident(), rv));
+ dprintf(("%ld: PyThread_start_new_thread succeeded: %p\n", PyThread_get_thread_ident(), rv));
}
return success;
path = PySys_GetObject("path");
if (path != NULL && PyList_Check(path)) {
int npath = PyList_Size(path);
- int taillen = strlen(tail);
+ size_t taillen = strlen(tail);
char namebuf[MAXPATHLEN+1];
for (i = 0; i < npath; i++) {
PyObject *v = PyList_GetItem(path, i);
break;
}
if (PyString_Check(v)) {
- int len;
+ size_t len;
len = PyString_Size(v);
if (len + 1 + taillen >= MAXPATHLEN)
continue; /* Too long */
strcpy(namebuf, PyString_AsString(v));
- if ((int)strlen(namebuf) != len)
+ if (strlen(namebuf) != len)
continue; /* v contains '\0' */
if (len > 0 && namebuf[len-1] != SEP)
namebuf[len++] = SEP;