diff options
author | gnieboer <gnieboer@corpcomm.net> | 2017-06-15 21:42:06 -0400 |
---|---|---|
committer | gnieboer <gnieboer@corpcomm.net> | 2017-06-16 09:37:16 -0400 |
commit | 5e0791286134c9be1be957b4aa7b2287e1aea7a6 (patch) | |
tree | 9c9af2fa3e6ff77ad5d06bf4ac045e6c29521e6d | |
parent | b57a37f7c676542f08a27d3f141f4d9ed2ab1132 (diff) |
gr-blocks: fix file_metadata_* not closing files on close()
-rw-r--r-- | gr-blocks/lib/file_meta_sink_impl.cc | 31 | ||||
-rw-r--r-- | gr-blocks/lib/file_meta_source_impl.cc | 22 |
2 files changed, 29 insertions, 24 deletions
diff --git a/gr-blocks/lib/file_meta_sink_impl.cc b/gr-blocks/lib/file_meta_sink_impl.cc index 027d12faf2..b6d858489d 100644 --- a/gr-blocks/lib/file_meta_sink_impl.cc +++ b/gr-blocks/lib/file_meta_sink_impl.cc @@ -141,17 +141,7 @@ namespace gr { { close(); - if(d_fp) { - fclose(d_fp); - d_fp = 0; - } - if(d_state == STATE_DETACHED) { - if(d_hdr_fp) { - fclose(d_hdr_fp); - d_hdr_fp = 0; - } - } } bool @@ -216,6 +206,18 @@ namespace gr { d_new_fp = 0; } d_updated = true; + + if (d_fp) { + fclose(d_fp); + d_fp = 0; + } + + if (d_state == STATE_DETACHED) { + if (d_hdr_fp) { + fclose(d_hdr_fp); + d_hdr_fp = 0; + } + } } void @@ -298,10 +300,11 @@ namespace gr { void file_meta_sink_impl::update_last_header() { - if(d_state == STATE_DETACHED) - update_last_header_detached(); - else - update_last_header_inline(); + if(d_state == STATE_DETACHED) { + if (d_hdr_fp) update_last_header_detached(); + } else { + if(d_fp) update_last_header_inline(); + } } void diff --git a/gr-blocks/lib/file_meta_source_impl.cc b/gr-blocks/lib/file_meta_source_impl.cc index 4cb0ab8ed1..3c72e2a003 100644 --- a/gr-blocks/lib/file_meta_source_impl.cc +++ b/gr-blocks/lib/file_meta_source_impl.cc @@ -111,17 +111,7 @@ namespace gr { { close(); - if(d_fp) { - fclose(d_fp); - d_fp = 0; - } - if(d_state == STATE_DETACHED) { - if(d_hdr_fp) { - fclose(d_hdr_fp); - d_hdr_fp = 0; - } - } } bool @@ -339,6 +329,18 @@ namespace gr { d_new_fp = 0; } d_updated = true; + + if (d_fp) { + fclose(d_fp); + d_fp = 0; + } + + if (d_state == STATE_DETACHED) { + if (d_hdr_fp) { + fclose(d_hdr_fp); + d_hdr_fp = 0; + } + } } void |