diff --git a/src/tss.cpp b/src/tss.cpp index 8fefec2a..5f45c901 100644 --- a/src/tss.cpp +++ b/src/tss.cpp @@ -40,6 +40,17 @@ struct tss_data_t tss_data_t* tss_data = 0; boost::once_flag tss_data_once = BOOST_ONCE_INIT; +extern "C" void cleanup_slots(void* p) +{ + tss_slots* slots = static_cast(p); + for (tss_slots::size_type i = 0; i < slots->size(); ++i) + { + boost::mutex::scoped_lock lock(tss_data->mutex); + (*tss_data->cleanup_handlers[i])((*slots)[i]); + (*slots)[i] = 0; + } +} + void init_tss_data() { std::auto_ptr temp(new tss_data_t); @@ -63,17 +74,6 @@ void init_tss_data() tss_data = temp.release(); } -extern "C" void cleanup_slots(void* p) -{ - tss_slots* slots = static_cast(p); - for (tss_slots::size_type i = 0; i < slots->size(); ++i) - { - boost::mutex::scoped_lock lock(tss_data->mutex); - (*tss_data->cleanup_handlers[i])((*slots)[i]); - (*slots)[i] = 0; - } -} - #if defined(BOOST_HAS_WINTHREADS) void __cdecl tss_thread_exit() {