libmediactl: restruct error path
authorAndy Shevchenko <andriy.shevchenko@linux.intel.com>
Mon, 5 Sep 2011 15:24:03 +0000 (18:24 +0300)
committerLaurent Pinchart <laurent.pinchart@ideasonboard.com>
Tue, 6 Sep 2011 10:16:41 +0000 (12:16 +0200)
Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
[laurent.pinchart@ideasonboard.com: Fix return value at end of
enumeration]
Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
src/media.c

index e3cab86..3819b69 100644 (file)
@@ -255,7 +255,7 @@ static int media_enum_entities(struct media_device *media)
        char target[1024];
        char *p;
        __u32 id;
-       int ret;
+       int ret = 0;
 
        for (id = 0; ; id = entity->info.id) {
                size = (media->entities_count + 1) * sizeof(*media->entities);
@@ -268,9 +268,8 @@ static int media_enum_entities(struct media_device *media)
 
                ret = ioctl(media->fd, MEDIA_IOC_ENUM_ENTITIES, &entity->info);
                if (ret < 0) {
-                       if (errno == EINVAL)
-                               break;
-                       return -errno;
+                       ret = errno != EINVAL ? -errno : 0;
+                       break;
                }
 
                /* Number of links (for outbound links) plus number of pads (for
@@ -281,8 +280,10 @@ static int media_enum_entities(struct media_device *media)
 
                entity->pads = malloc(entity->info.pads * sizeof(*entity->pads));
                entity->links = malloc(entity->max_links * sizeof(*entity->links));
-               if (entity->pads == NULL || entity->links == NULL)
-                       return -ENOMEM;
+               if (entity->pads == NULL || entity->links == NULL) {
+                       ret = -ENOMEM;
+                       break;
+               }
 
                media->entities_count++;
 
@@ -316,7 +317,7 @@ static int media_enum_entities(struct media_device *media)
                        strcpy(entity->devname, devname);
        }
 
-       return 0;
+       return ret;
 }
 
 struct media_device *media_open(const char *name, int verbose)