On Mon, Feb 15, 2021 at 1:51 PM Kent Gibson <warthog618@xxxxxxxxx> wrote: > > If "default_vals" is not provided in the kwds then default_vals are > passed uninitialized to gpiod_line_request_bulk(), so rename the > existing default_vals to vals and introduce a new default_vals that > points to vals, or NULL if no defaults have been passed. > > Fixes: 96c524c4951c (bindings: implement python bindings) > Reported-by: Pedro Botella <pbotella@xxxxxxxxx> > Signed-off-by: Kent Gibson <warthog618@xxxxxxxxx> > --- > bindings/python/gpiodmodule.c | 8 +++++--- > 1 file changed, 5 insertions(+), 3 deletions(-) > > diff --git a/bindings/python/gpiodmodule.c b/bindings/python/gpiodmodule.c > index fee4c32..832787d 100644 > --- a/bindings/python/gpiodmodule.c > +++ b/bindings/python/gpiodmodule.c > @@ -1327,12 +1327,13 @@ static PyObject *gpiod_LineBulk_request(gpiod_LineBulkObject *self, > NULL }; > > int rv, type = gpiod_LINE_REQ_DIR_AS_IS, flags = 0, > - default_vals[GPIOD_LINE_BULK_MAX_LINES], val; > + vals[GPIOD_LINE_BULK_MAX_LINES], val; > PyObject *def_vals_obj = NULL, *iter, *next; > struct gpiod_line_request_config conf; > struct gpiod_line_bulk bulk; > Py_ssize_t num_def_vals; > char *consumer = NULL; > + const int *default_vals = NULL; > Py_ssize_t i; > > if (gpiod_LineBulkOwnerIsClosed(self)) > @@ -1348,7 +1349,7 @@ static PyObject *gpiod_LineBulk_request(gpiod_LineBulkObject *self, > gpiod_MakeRequestConfig(&conf, consumer, type, flags); > > if (def_vals_obj) { > - memset(default_vals, 0, sizeof(default_vals)); > + memset(vals, 0, sizeof(vals)); > > num_def_vals = PyObject_Size(def_vals_obj); > if (num_def_vals != self->num_lines) { > @@ -1375,8 +1376,9 @@ static PyObject *gpiod_LineBulk_request(gpiod_LineBulkObject *self, > return NULL; > } > > - default_vals[i] = !!val; > + vals[i] = !!val; > } > + default_vals = vals; > } > > Py_BEGIN_ALLOW_THREADS; > -- > 2.30.0 > Applied, thanks! Bartosz