* Original patch description:
I've been using the alsaseq python module and I found a bug. Sometimes
the SEQ_* constants have extremely large and incorrect values. For
example,
25769803811 instead of 35. The lower 32-bits are always
correct.
Obviously, I'm running a 64-bit operating system.
The problem is that the `value` member of the `ConstantObject`
structure is an `unsigned int` whereas it should be a `long`. I've
attached a patch. It's against the latest released version, 1.0.20.
* Revised patch description:
I just noticed that `PyString_FromFormat` in Python 2.6 doesn't handle
`%lx` in format strings, so my patch breaks `repr(Constant)`.
In addition to that, it was not necessary to change the signedness of `value`.
With those two things in mind, the patch perhaps ought to look like
this (see attached).
Signed-off-by: Chris Coleman <chris.coleman83 at gmail.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
;
/* value of constant */
- unsigned int value;
+ unsigned long int value;
/* name of constant */
const char *name;
/* type of constant */
Constant_repr(ConstantObject *self) {
return PyString_FromFormat("%s(0x%x)",
self->name,
- self->value);
+ (unsigned int)self->value);
}
/** alsaseq.Constant tp_str */