diff options
author | Stefan Richter <stefanr@s5r6.in-berlin.de> | 2010-06-05 15:21:00 +0200 |
---|---|---|
committer | Stefan Richter <stefanr@s5r6.in-berlin.de> | 2010-09-07 11:25:22 +0200 |
commit | 808cc7ee2cbca2ce560770d6bc35ee70b3a4ae22 (patch) | |
tree | 03b4309ebd15435f39f671d31050fa88746ec602 | |
parent | c18094afb2a2bb826dc93bedd4301aab0024ef80 (diff) | |
download | libraw1394-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.c | 3 | ||||
-rw-r--r-- | src/fw.c | 3 |
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) @@ -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; |