From d50338fbd9928527f6d53ade8974619591982b2e Mon Sep 17 00:00:00 2001 From: Jack Jansen Date: Thu, 6 Jul 2000 12:22:00 +0000 Subject: [PATCH] Added support for H (unsigned short) specifier in PyArg_ParseTuple and Py_BuildValue. --- Python/getargs.c | 28 +++++++++++++++++++++++++++- Python/modsupport.c | 3 +++ 2 files changed, 30 insertions(+), 1 deletion(-) diff --git a/Python/getargs.c b/Python/getargs.c index b213ba2adb..a28354dda0 100644 --- a/Python/getargs.c +++ b/Python/getargs.c @@ -489,6 +489,27 @@ convertsimple1(arg, p_format, p_va) break; } + case 'H': /* unsigned short int */ + { + unsigned short *p = va_arg(*p_va, unsigned short *); + long ival = PyInt_AsLong(arg); + if (ival == -1 && PyErr_Occurred()) + return "integer"; + else if (ival < 0) { + PyErr_SetString(PyExc_OverflowError, + "unsigned short integer is less than minimum"); + return "integer"; + } + else if (ival > USHRT_MAX) { + PyErr_SetString(PyExc_OverflowError, + "unsigned short integer is greater than maximum"); + return "integer"; + } + else + *p = (unsigned short) ival; + break; + } + case 'i': /* signed int */ { int *p = va_arg(*p_va, int *); @@ -509,7 +530,6 @@ convertsimple1(arg, p_format, p_va) *p = ival; break; } - case 'l': /* long int */ { long *p = va_arg(*p_va, long *); @@ -1207,6 +1227,12 @@ skipitem(p_format, p_va) break; } + case 'H': /* unsigned short int */ + { + (void) va_arg(*p_va, unsigned short *); + break; + } + case 'i': /* int */ { (void) va_arg(*p_va, int *); diff --git a/Python/modsupport.c b/Python/modsupport.c index afecc0e515..5cd28709f1 100644 --- a/Python/modsupport.c +++ b/Python/modsupport.c @@ -278,6 +278,9 @@ do_mkvalue(p_format, p_va) case 'h': case 'i': return PyInt_FromLong((long)va_arg(*p_va, int)); + + case 'H': + return PyInt_FromLong((long)va_arg(*p_va, unsigned int)); case 'l': return PyInt_FromLong((long)va_arg(*p_va, long)); -- 2.40.0