aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorStefan Richter <stefanr@s5r6.in-berlin.de>2010-06-05 15:21:00 +0200
committerStefan Richter <stefanr@s5r6.in-berlin.de>2010-09-07 11:25:22 +0200
commit808cc7ee2cbca2ce560770d6bc35ee70b3a4ae22 (patch)
tree03b4309ebd15435f39f671d31050fa88746ec602
parentc18094afb2a2bb826dc93bedd4301aab0024ef80 (diff)
downloadlibraw1394-808cc7ee2cbca2ce560770d6bc35ee70b3a4ae22.tar.gz
Always imply iso shutdown in fw_destroy_handle
because ieee1394_destroy_handle does it too. Otherwise, clients which rely on the ieee1394 backend behaviour leak memory when running on the juju backend. Also add the ability to call fw_iso_shutdown multiple times or before a successful context initialization. Faulty clients might rely on it based on ieee1394 backend behaviour. Signed-off-by: Stefan Richter <stefanr@s5r6.in-berlin.de>
-rw-r--r--src/fw-iso.c3
-rw-r--r--src/fw.c3
2 files changed, 4 insertions, 2 deletions
diff --git a/src/fw-iso.c b/src/fw-iso.c
index 1829fd0..5193b9a 100644
--- a/src/fw-iso.c
+++ b/src/fw-iso.c
@@ -602,6 +602,9 @@ void fw_iso_stop(fw_handle_t handle)
void fw_iso_shutdown(fw_handle_t handle)
{
+ if (handle->iso.packets == NULL)
+ return;
+
munmap(handle->iso.buffer,
handle->iso.buf_packets * handle->iso.max_packet_size);
if (handle->iso.state != ISO_STOPPED)
diff --git a/src/fw.c b/src/fw.c
index f92c1b6..6c851e0 100644
--- a/src/fw.c
+++ b/src/fw.c
@@ -502,9 +502,8 @@ void fw_destroy_handle(fw_handle_t handle)
close(handle->devices[i].fd);
}
-
+ fw_iso_shutdown(handle);
close(handle->epoll_fd);
-
free(handle);
return;