mirror of
https://github.com/python/cpython.git
synced 2024-12-01 05:45:40 +08:00
Get test_capi & test_getargs2 to pass on alphas
* UINT_MAX -> ULONG_MAX since we are dealing with longs * ParseTuple needs &int for 'i' and &long for 'l' There may be a better way to do this, but this works.
This commit is contained in:
parent
dfbfe736ce
commit
699cbb7676
@ -319,15 +319,28 @@ getargs_l(PyObject *self, PyObject *args)
|
|||||||
{
|
{
|
||||||
PyObject *ob, *result = NULL, *argtuple;
|
PyObject *ob, *result = NULL, *argtuple;
|
||||||
char *fmt;
|
char *fmt;
|
||||||
long value = 0;
|
|
||||||
|
|
||||||
if (!PyArg_ParseTuple(args, "sO", &fmt, &ob))
|
if (!PyArg_ParseTuple(args, "sO", &fmt, &ob))
|
||||||
return NULL;
|
return NULL;
|
||||||
argtuple = PyTuple_New(1);
|
argtuple = PyTuple_New(1);
|
||||||
Py_INCREF(ob);
|
Py_INCREF(ob);
|
||||||
PyTuple_SET_ITEM(argtuple, 0, ob);
|
PyTuple_SET_ITEM(argtuple, 0, ob);
|
||||||
if (PyArg_ParseTuple(argtuple, fmt, &value))
|
/* It's necessary to distinguish between ints and longs, since
|
||||||
result = PyLong_FromLong(value);
|
sizeof(int) != sizeof(long) on some (64 bit) platforms.
|
||||||
|
value must be an int for: PyArg_ParseTuple(t, 'i', &value)
|
||||||
|
value must be an long for: PyArg_ParseTuple(t, 'l', &value)
|
||||||
|
*/
|
||||||
|
if (*fmt == 'i') {
|
||||||
|
int value;
|
||||||
|
if (PyArg_ParseTuple(argtuple, fmt, &value))
|
||||||
|
result = PyLong_FromLong(value);
|
||||||
|
} else if (*fmt == 'l') {
|
||||||
|
long value;
|
||||||
|
if (PyArg_ParseTuple(argtuple, fmt, &value))
|
||||||
|
result = PyLong_FromLong(value);
|
||||||
|
} else {
|
||||||
|
PyErr_SetString(PyExc_TypeError, "format was not i or l");
|
||||||
|
}
|
||||||
Py_DECREF(argtuple);
|
Py_DECREF(argtuple);
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
@ -384,13 +397,13 @@ test_k_code(PyObject *self)
|
|||||||
if (tuple == NULL)
|
if (tuple == NULL)
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
/* a number larger than UINT_MAX even on 64-bit platforms */
|
/* a number larger than ULONG_MAX even on 64-bit platforms */
|
||||||
num = PyLong_FromString("FFFFFFFFFFFFFFFFFFFFFFFF", NULL, 16);
|
num = PyLong_FromString("FFFFFFFFFFFFFFFFFFFFFFFF", NULL, 16);
|
||||||
if (num == NULL)
|
if (num == NULL)
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
value = PyInt_AsUnsignedLongMask(num);
|
value = PyInt_AsUnsignedLongMask(num);
|
||||||
if (value != UINT_MAX)
|
if (value != ULONG_MAX)
|
||||||
return raiseTestError("test_k_code",
|
return raiseTestError("test_k_code",
|
||||||
"PyInt_AsUnsignedLongMask() returned wrong value for long 0xFFF...FFF");
|
"PyInt_AsUnsignedLongMask() returned wrong value for long 0xFFF...FFF");
|
||||||
|
|
||||||
@ -399,7 +412,7 @@ test_k_code(PyObject *self)
|
|||||||
value = -1;
|
value = -1;
|
||||||
if (PyArg_ParseTuple(tuple, "k:test_k_code", &value) < 0)
|
if (PyArg_ParseTuple(tuple, "k:test_k_code", &value) < 0)
|
||||||
return NULL;
|
return NULL;
|
||||||
if (value != UINT_MAX)
|
if (value != ULONG_MAX)
|
||||||
return raiseTestError("test_k_code",
|
return raiseTestError("test_k_code",
|
||||||
"k code returned wrong value for long 0xFFF...FFF");
|
"k code returned wrong value for long 0xFFF...FFF");
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user