Mercurial > cpython-lru_cache-weakref
diff Python/modsupport.c @ 35936:2150af84a185 2.4
bug #1281408: make Py_BuildValue work with unsigned longs and long longs
| author | Georg Brandl <georg@python.org> |
|---|---|
| date | Thu, 24 Nov 2005 15:38:54 +0000 |
| parents | e4a5a84e5ebb |
| children | e0feadc7affb 9541369b0dca |
line wrap: on
line diff
--- a/Python/modsupport.c Wed Nov 23 02:19:18 2005 +0000 +++ b/Python/modsupport.c Thu Nov 24 15:38:54 2005 +0000 @@ -303,18 +303,35 @@ case 'H': return PyInt_FromLong((long)va_arg(*p_va, unsigned int)); + case 'I': + { + unsigned int n; + n = va_arg(*p_va, unsigned int); + if (n > PyInt_GetMax()) + return PyLong_FromUnsignedLong((unsigned long)n); + else + return PyInt_FromLong(n); + } + case 'l': - return PyInt_FromLong((long)va_arg(*p_va, long)); + return PyInt_FromLong(va_arg(*p_va, long)); case 'k': - return PyInt_FromLong((long)va_arg(*p_va, unsigned long)); + { + unsigned long n; + n = va_arg(*p_va, unsigned long); + if (n > PyInt_GetMax()) + return PyLong_FromUnsignedLong(n); + else + return PyInt_FromLong(n); + } #ifdef HAVE_LONG_LONG case 'L': return PyLong_FromLongLong((PY_LONG_LONG)va_arg(*p_va, PY_LONG_LONG)); case 'K': - return PyLong_FromLongLong((PY_LONG_LONG)va_arg(*p_va, unsigned PY_LONG_LONG)); + return PyLong_FromUnsignedLongLong((PY_LONG_LONG)va_arg(*p_va, unsigned PY_LONG_LONG)); #endif #ifdef Py_USING_UNICODE case 'u':
