core: fix an error path in line event requests
authorBartosz Golaszewski <bartekgola@gmail.com>
Mon, 23 Oct 2017 21:29:16 +0000 (23:29 +0200)
committerBartosz Golaszewski <bartekgola@gmail.com>
Mon, 23 Oct 2017 21:32:09 +0000 (23:32 +0200)
Correctly release already requested lines in case of an error
in line_request_event_single().

Signed-off-by: Bartosz Golaszewski <bartekgola@gmail.com>
src/lib/core.c

index 4cac1e4115f137423cd1d27170183425f722616c..9410601945ac74e356caf68f2a2c85842786a4ac 100644 (file)
@@ -417,14 +417,14 @@ static int line_request_events(struct gpiod_line_bulk *bulk,
                               const struct gpiod_line_request_config *config)
 {
        struct gpiod_line *line;
-       unsigned int off, i;
-       int rv;
+       unsigned int off;
+       int rv, rev;
 
        gpiod_line_bulk_foreach_line_off(bulk, line, off) {
                rv = line_request_event_single(line, config);
                if (rv) {
-                       for (i = off - 1; off > 0; off--) {
-                               line = gpiod_line_bulk_get_line(bulk, i);
+                       for (rev = off - 1; rev >= 0; rev--) {
+                               line = gpiod_line_bulk_get_line(bulk, rev);
                                gpiod_line_release(line);
                        }