summaryrefslogtreecommitdiffstats
path: root/PC
diff options
context:
space:
mode:
authorBrian Curtin <brian.curtin@gmail.com>2010-08-17 20:08:40 (GMT)
committerBrian Curtin <brian.curtin@gmail.com>2010-08-17 20:08:40 (GMT)
commitabb3351785f0e526a8f5170a5ad08ae9d4638a0a (patch)
tree1d44d9e38b4af5337f1030d0e5666817a11b38c6 /PC
parent19467d27ff14ebe31978438078ed5a661ffd29fb (diff)
downloadcpython-abb3351785f0e526a8f5170a5ad08ae9d4638a0a.zip
cpython-abb3351785f0e526a8f5170a5ad08ae9d4638a0a.tar.gz
cpython-abb3351785f0e526a8f5170a5ad08ae9d4638a0a.tar.bz2
Properly downcast from size_t/Py_ssize_t in a few places.
Diffstat (limited to 'PC')
-rw-r--r--PC/winreg.c10
1 files changed, 6 insertions, 4 deletions
diff --git a/PC/winreg.c b/PC/winreg.c
index eacb4c2..390a9ce 100644
--- a/PC/winreg.c
+++ b/PC/winreg.c
@@ -765,8 +765,9 @@ Py2Reg(PyObject *value, DWORD typ, BYTE **retDataBuf, DWORD *retDataSize)
else {
if (!PyUnicode_Check(value))
return FALSE;
-
- *retDataSize = 2 + PyUnicode_GET_DATA_SIZE(value);
+ *retDataSize = Py_SAFE_DOWNCAST(
+ 2 + PyUnicode_GET_DATA_SIZE(value),
+ size_t, DWORD);
}
*retDataBuf = (BYTE *)PyMem_NEW(DWORD, *retDataSize);
if (*retDataBuf==NULL){
@@ -798,7 +799,8 @@ Py2Reg(PyObject *value, DWORD typ, BYTE **retDataBuf, DWORD *retDataSize)
t = PyList_GET_ITEM(value, j);
if (!PyUnicode_Check(t))
return FALSE;
- size += 2 + PyUnicode_GET_DATA_SIZE(t);
+ size += Py_SAFE_DOWNCAST(2 + PyUnicode_GET_DATA_SIZE(t),
+ size_t, DWORD);
}
*retDataSize = size + 2;
@@ -848,7 +850,7 @@ Py2Reg(PyObject *value, DWORD typ, BYTE **retDataBuf, DWORD *retDataSize)
PyErr_NoMemory();
return FALSE;
}
- *retDataSize = view.len;
+ *retDataSize = Py_SAFE_DOWNCAST(view.len, Py_ssize_t, DWORD);
memcpy(*retDataBuf, view.buf, view.len);
PyBuffer_Release(&view);
}