From: Bartosz Golaszewski Date: Sun, 22 Jul 2018 13:23:59 +0000 (+0200) Subject: bindings: python: don't call gpiod_LineBulk_init() directly X-Git-Url: http://git.maquefel.me/?a=commitdiff_plain;h=f8221bc88b8e09929be37bb8f42117b511dc2836;p=qemu-gpiodev%2Flibgpiod.git bindings: python: don't call gpiod_LineBulk_init() directly We can instantiate an object of a type by "calling" it's type structure using PyObject_CallObject(). It will internally call the constructor so use it to shrink the code. Signed-off-by: Bartosz Golaszewski --- diff --git a/bindings/python/gpiodmodule.c b/bindings/python/gpiodmodule.c index 2110a20..b0f8279 100644 --- a/bindings/python/gpiodmodule.c +++ b/bindings/python/gpiodmodule.c @@ -1230,27 +1230,15 @@ static gpiod_LineBulkObject *gpiod_LineToLineBulk(gpiod_LineObject *line) { gpiod_LineBulkObject *ret; PyObject *args; - int rv; args = Py_BuildValue("((O))", line); if (!args) return NULL; - ret = PyObject_New(gpiod_LineBulkObject, &gpiod_LineBulkType); - if (!ret) { - Py_DECREF(args); - return NULL; - } - - ret->lines = NULL; - ret->num_lines = 0; - - rv = gpiod_LineBulk_init(ret, args); + ret = (gpiod_LineBulkObject *)PyObject_CallObject( + (PyObject *)&gpiod_LineBulkType, + args); Py_DECREF(args); - if (rv) { - Py_DECREF(ret); - return NULL; - } return ret; } @@ -1466,24 +1454,15 @@ static gpiod_LineBulkObject *gpiod_ListToLineBulk(PyObject *lines) { gpiod_LineBulkObject *bulk; PyObject *arg; - int rv; arg = PyTuple_Pack(1, lines); if (!arg) return NULL; - bulk = PyObject_New(gpiod_LineBulkObject, &gpiod_LineBulkType); - if (!bulk) { - Py_DECREF(arg); - return NULL; - } - - rv = gpiod_LineBulk_init(bulk, arg); + bulk = (gpiod_LineBulkObject *)PyObject_CallObject( + (PyObject *)&gpiod_LineBulkType, + arg); Py_DECREF(arg); - if (rv < 0) { - Py_DECREF(bulk); - return NULL; - } return bulk; }