[aravis] fake_gv_camera: fix memory leak and correctly check for getifaddrs return value.
- From: Emmanuel Pacaud <emmanuel src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [aravis] fake_gv_camera: fix memory leak and correctly check for getifaddrs return value.
- Date: Sun, 16 Oct 2011 19:09:36 +0000 (UTC)
commit 987c2b8fb29d77c0ba3580dd766285d0c82b6725
Author: Emmanuel Pacaud <emmanuel gnome org>
Date: Sun Oct 16 20:49:56 2011 +0200
fake_gv_camera: fix memory leak and correctly check for getifaddrs return value.
src/arvfakegvcamera.c | 11 +++++++++--
1 files changed, 9 insertions(+), 2 deletions(-)
---
diff --git a/src/arvfakegvcamera.c b/src/arvfakegvcamera.c
index 61312b6..d985f69 100644
--- a/src/arvfakegvcamera.c
+++ b/src/arvfakegvcamera.c
@@ -197,7 +197,7 @@ arv_fake_gv_camera_new (const char *interface_name)
{
ArvFakeGvCamera *gv_camera;
struct ifaddrs *ifap;
- int n_interfaces;
+ int return_value;
gboolean interface_found = FALSE;
gboolean binding_error = FALSE;
@@ -206,7 +206,12 @@ arv_fake_gv_camera_new (const char *interface_name)
gv_camera = g_new0 (ArvFakeGvCamera, 1);
gv_camera->camera = arv_fake_camera_new ("GV01");
- n_interfaces = getifaddrs (&ifap);
+ return_value = getifaddrs (&ifap);
+ if (return_value < 0) {
+ g_warning ("[FakeGvCamera::new] No network interface found");
+ return NULL;
+ }
+
for (;ifap != NULL && !interface_found; ifap = ifap->ifa_next) {
if ((ifap->ifa_flags & IFF_UP) != 0 &&
(ifap->ifa_flags & IFF_POINTOPOINT) == 0 &&
@@ -280,6 +285,8 @@ arv_fake_gv_camera_new (const char *interface_name)
}
}
+ freeifaddrs (ifap);
+
if (binding_error)
goto BINDING_ERROR;
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]