diff options
author | Victor Stinner <victor.stinner@haypocalc.com> | 2010-11-10 14:12:20 (GMT) |
---|---|---|
committer | Victor Stinner <victor.stinner@haypocalc.com> | 2010-11-10 14:12:20 (GMT) |
commit | 47f637ce17022464307b093cee6f367e2dc7f024 (patch) | |
tree | 0c342696dbe02e4e8449747f6b4d2ab9e0b1dcd6 /Modules/getpath.c | |
parent | cf9f98034a6bc7c55486042da1867447cfd2f0b5 (diff) | |
download | cpython-47f637ce17022464307b093cee6f367e2dc7f024.zip cpython-47f637ce17022464307b093cee6f367e2dc7f024.tar.gz cpython-47f637ce17022464307b093cee6f367e2dc7f024.tar.bz2 |
getpath.c: fix test to detech PyUnicode_AsWideChar() failure
PyUnicode_AsWideChar() result is signed, whereas it was stored in a unsigned
variable, and then the test was "n >= 0" which is always true to an unsigned
number. Patch written by Hallvard B Furuseth.
Diffstat (limited to 'Modules/getpath.c')
-rw-r--r-- | Modules/getpath.c | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/Modules/getpath.c b/Modules/getpath.c index c9353c7..16b3b2a 100644 --- a/Modules/getpath.c +++ b/Modules/getpath.c @@ -355,17 +355,17 @@ search_for_exec_prefix(wchar_t *argv0_path, wchar_t *home, wchar_t *_exec_prefix char buf[MAXPATHLEN+1]; PyObject *decoded; wchar_t rel_builddir_path[MAXPATHLEN+1]; - size_t n; n = fread(buf, 1, MAXPATHLEN, f); buf[n] = '\0'; fclose(f); decoded = PyUnicode_DecodeUTF8(buf, n, "surrogateescape"); if (decoded != NULL) { - n = PyUnicode_AsWideChar((PyUnicodeObject*)decoded, + Py_ssize_t k; + k = PyUnicode_AsWideChar((PyUnicodeObject*)decoded, rel_builddir_path, MAXPATHLEN); Py_DECREF(decoded); - if (n >= 0) { - rel_builddir_path[n] = L'\0'; + if (k >= 0) { + rel_builddir_path[k] = L'\0'; wcscpy(exec_prefix, argv0_path); joinpath(exec_prefix, rel_builddir_path); return -1; |