From 8a864f91eba77c9ca24c7efc5d9b4477fd26c77c Mon Sep 17 00:00:00 2001 From: Songyu Lu Date: Mon, 4 Mar 2019 10:22:51 -0600 Subject: HDFFV-10705: Fixed memory leak in scale offset filter. --- src/H5Zscaleoffset.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/H5Zscaleoffset.c b/src/H5Zscaleoffset.c index cdf31a4..0026749 100644 --- a/src/H5Zscaleoffset.c +++ b/src/H5Zscaleoffset.c @@ -1174,6 +1174,8 @@ H5Z_filter_scaleoffset(unsigned flags, size_t cd_nelmts, const unsigned cd_value /* special case: minbits equal to full precision */ if(minbits == p.size * 8) { HDmemcpy(outbuf, (unsigned char*)(*buf)+buf_offset, size_out); + /* free the original buffer */ + H5MM_xfree(*buf); /* convert to dataset datatype endianness order if needed */ if(need_convert) @@ -1272,6 +1274,9 @@ H5Z_filter_scaleoffset(unsigned flags, size_t cd_nelmts, const unsigned cd_value /* special case: minbits equal to full precision */ if(minbits == p.size * 8) { HDmemcpy(outbuf + buf_offset, *buf, nbytes); + /* free the original buffer */ + H5MM_xfree(*buf); + *buf = outbuf; outbuf = NULL; *buf_size = size_out; -- cgit v0.12 From 35b6085c6058ea31182fe4f4dc2ae6f8195d63c9 Mon Sep 17 00:00:00 2001 From: Songyu Lu Date: Mon, 4 Mar 2019 16:09:26 -0600 Subject: HDFFV-10705: added a release note. --- release_docs/RELEASE.txt | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/release_docs/RELEASE.txt b/release_docs/RELEASE.txt index baa0456..965b98d 100644 --- a/release_docs/RELEASE.txt +++ b/release_docs/RELEASE.txt @@ -327,6 +327,13 @@ Bug Fixes since HDF5-1.10.4 release Library ------- + - Fixed memory leak in scale offset filter + + The data buffer was not freed in a special case like the general case. + It caused the memory usage to grow. + + (RL - 2019/3/4, HDFFV-10705) + - Fix hangs with collective metadata reads during chunked dataset I/O In the parallel library, it was discovered that when a particular -- cgit v0.12 From 1848184afec2867fbe46363b30b9281fc6827f4a Mon Sep 17 00:00:00 2001 From: Songyu Lu Date: Thu, 7 Mar 2019 10:10:11 -0600 Subject: Minor change: revised the note from the previous commit about HDFFV-10705. --- release_docs/RELEASE.txt | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/release_docs/RELEASE.txt b/release_docs/RELEASE.txt index 965b98d..2658664 100644 --- a/release_docs/RELEASE.txt +++ b/release_docs/RELEASE.txt @@ -330,7 +330,8 @@ Bug Fixes since HDF5-1.10.4 release - Fixed memory leak in scale offset filter The data buffer was not freed in a special case like the general case. - It caused the memory usage to grow. + The special case is when the MinBits is the same as the number of bits in + the datatype's precision. It caused the memory usage to grow. (RL - 2019/3/4, HDFFV-10705) -- cgit v0.12 From 2f3c34c649b8ec04d399296fa6203f68615e55a0 Mon Sep 17 00:00:00 2001 From: Songyu Lu Date: Fri, 8 Mar 2019 09:56:09 -0600 Subject: Revised the entry of bug fix for HDFFV-10705. --- release_docs/RELEASE.txt | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/release_docs/RELEASE.txt b/release_docs/RELEASE.txt index 2658664..3b68ba0 100644 --- a/release_docs/RELEASE.txt +++ b/release_docs/RELEASE.txt @@ -329,9 +329,11 @@ Bug Fixes since HDF5-1.10.4 release ------- - Fixed memory leak in scale offset filter - The data buffer was not freed in a special case like the general case. - The special case is when the MinBits is the same as the number of bits in - the datatype's precision. It caused the memory usage to grow. + In a special case where the MinBits is the same as the number of bits in + the datatype's precision, the filter's data buffer was not freed, causing + the memory usage to grow. In general the buffer was freed correctly. The + Minbits are the minimal number of bits to store the data values. Please + see the reference manual for H5Pset_scaleoffset for the detail. (RL - 2019/3/4, HDFFV-10705) -- cgit v0.12