Ticket #3926: boost-tls.patch

File boost-tls.patch, 1.3 KB (added by pluto@…, 12 years ago)

proposed patch for proper cleanup of the static libboost_thread linked into shared objects.

  • boost_1_43_0/libs/thread/src/pthread/once.cpp

    old new  
    3232                BOOST_VERIFY(!pthread_key_create(&epoch_tss_key,delete_epoch_tss_data));
    3333            }
    3434           
     35            void __attribute__((destructor)) delete_epoch_tss_key_on_dlclose()
     36            {
     37                if (epoch_tss_key_flag!=PTHREAD_ONCE_INIT)
     38                    pthread_key_delete(epoch_tss_key);
     39            }
    3540        }
    3641       
    3742        boost::uintmax_t& get_once_per_thread_epoch()
  • boost_1_43_0/libs/thread/src/pthread/thread.cpp

    old new  
    9292            {
    9393                BOOST_VERIFY(!pthread_key_create(&current_thread_tls_key,&tls_destructor));
    9494            }
     95           
     96            void __attribute__((destructor)) delete_current_thread_tls_key_on_dlclose()
     97            {
     98                if (current_thread_tls_init_flag.epoch!=BOOST_ONCE_INITIAL_FLAG_VALUE)
     99                    pthread_key_delete(current_thread_tls_key);
     100            }
    95101        }
    96102       
    97103        boost::detail::thread_data_base* get_current_thread_data()