From abb3351785f0e526a8f5170a5ad08ae9d4638a0a Mon Sep 17 00:00:00 2001 From: Brian Curtin Date: Tue, 17 Aug 2010 20:08:40 +0000 Subject: [PATCH] Properly downcast from size_t/Py_ssize_t in a few places. --- PC/winreg.c | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/PC/winreg.c b/PC/winreg.c index eacb4c2723e..390a9ce2a78 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); }