summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/media.c15
1 files changed, 8 insertions, 7 deletions
diff --git a/src/media.c b/src/media.c
index e3cab86..3819b69 100644
--- a/src/media.c
+++ b/src/media.c
@@ -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)