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> 2009/8/18 Chris Coleman <chris.coleman83@xxxxxxxxx>: > Sorry, here's the patch. > > Signed-off-by: Chris Coleman <chris.coleman83 at gmail.com> > > 2009/8/18 Chris Coleman <chris.coleman83@xxxxxxxxx>: >> Hello alsa-devel, >> >> 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. >> >> Regards, >> Chris Coleman >> >> Signed-off-by: Chris Coleman <chris.coleman83 at gmail.com> >> >
--- pyalsa-1.0.20.orig/pyalsa/alsaseq.c 2009-05-06 08:07:28.000000000 +0100 +++ pyalsa-1.0.20/pyalsa/alsaseq.c 2009-08-20 19:49:04.004648265 +0100 @@ -439,7 +439,7 @@ typedef struct { ; /* value of constant */ - unsigned int value; + unsigned long int value; /* name of constant */ const char *name; /* type of constant */ @@ -470,7 +470,7 @@ static PyObject * Constant_repr(ConstantObject *self) { return PyString_FromFormat("%s(0x%x)", self->name, - self->value); + (unsigned int)self->value); } /** alsaseq.Constant tp_str */
_______________________________________________ Alsa-devel mailing list Alsa-devel@xxxxxxxxxxxxxxxx http://mailman.alsa-project.org/mailman/listinfo/alsa-devel