summaryrefslogtreecommitdiffstats
path: root/src/H5E.c
diff options
context:
space:
mode:
authorDana Robinson <derobins@hdfgroup.org>2014-04-04 20:51:30 (GMT)
committerDana Robinson <derobins@hdfgroup.org>2014-04-04 20:51:30 (GMT)
commitb17ef126a75779f00ee4fef70a2b590b2c19fb4e (patch)
tree846887128b92979fd6e1c3cd84bb6a5c445e1068 /src/H5E.c
parent79a891c2417859de411a36e25203499f1f0d4280 (diff)
downloadhdf5-b17ef126a75779f00ee4fef70a2b590b2c19fb4e.zip
hdf5-b17ef126a75779f00ee4fef70a2b590b2c19fb4e.tar.gz
hdf5-b17ef126a75779f00ee4fef70a2b590b2c19fb4e.tar.bz2
[svn-r24961] Updates to Win32 thread-local storage cleanup when the thread-safe library is built on Windows. Previously, thread-local storage was not cleaned up, causing resource leaks.
Fixes HDFFV-8518, HDFFV-8699 As a part of these changes, the thread-safe + static library options are declared unsupported since the solution relies on DllMain. A solution for the static library is probably doable, but requires much more complicated surgery and has been deferred to HDF5 1.8.14. Tested on: 64-bit Windows 7 using VS 2012 (changes only affect Windows)
Diffstat (limited to 'src/H5E.c')
-rw-r--r--src/H5E.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/src/H5E.c b/src/H5E.c
index 3fc158c..73f1d51 100644
--- a/src/H5E.c
+++ b/src/H5E.c
@@ -363,8 +363,12 @@ H5E_get_stack(void)
estack = (H5E_t *)H5TS_get_thread_local_value(H5TS_errstk_key_g);
if(!estack) {
- /* no associated value with current thread - create one */
- estack = (H5E_t *)H5FL_MALLOC(H5E_t);
+ /* No associated value with current thread - create one */
+#ifdef H5_HAVE_WIN_THREADS
+ estack = (H5E_t *)LocalAlloc(LPTR, sizeof(H5E_t)); /* Win32 has to use LocalAlloc to match the LocalFree in DllMain */
+#else
+ estack = (H5E_t *)H5FL_MALLOC(sizeof(H5E_t));
+#endif /* H5_HAVE_WIN_THREADS */
HDassert(estack);
/* Set the thread-specific info */