Prev: 2.6.34-rc2: Reported regressions from 2.6.33
Next: forcedeth: cat /sys/class/net/eth0/carrier = Invalid argument
From: Roel Kluin on 22 Mar 2010 13:30 Regardless of the sign, the tuple was set from a long. Signed-off-by: Roel Kluin <roel.kluin(a)gmail.com> --- .../util/scripting-engines/trace-event-python.c | 13 ++++++++----- 1 files changed, 8 insertions(+), 5 deletions(-) Was something like this intended? diff --git a/tools/perf/util/scripting-engines/trace-event-python.c b/tools/perf/util/scripting-engines/trace-event-python.c index 33a414b..1d710b6 100644 --- a/tools/perf/util/scripting-engines/trace-event-python.c +++ b/tools/perf/util/scripting-engines/trace-event-python.c @@ -208,7 +208,7 @@ static void python_process_event(int cpu, void *data, int size __unused, unsigned long long nsecs, char *comm) { - PyObject *handler, *retval, *context, *t; + PyObject *handler, *retval, *context, *t, *obj; static char handler_name[256]; struct format_field *field; unsigned long long val; @@ -256,16 +256,19 @@ static void python_process_event(int cpu, void *data, offset &= 0xffff; } else offset = field->offset; - PyTuple_SetItem(t, n++, - PyString_FromString((char *)data + offset)); + obj = PyString_FromString((char *)data + offset); } else { /* FIELD_IS_NUMERIC */ val = read_size(data + field->offset, field->size); if (field->flags & FIELD_IS_SIGNED) { - PyTuple_SetItem(t, n++, PyInt_FromLong(val)); + obj = PyInt_FromLong(val); } else { - PyTuple_SetItem(t, n++, PyInt_FromLong(val)); + if (sizeof(val) > sizeof(Py_ssize_t)) + val += 1ULL << + (sizeof(Py_ssize_t) * 8); + obj = PyLong_FromUnsignedLongLong(val); } } + PyTuple_SetItem(t, n++, obj); } if (_PyTuple_Resize(&t, n) == -1) -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo(a)vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/ |