From a170690fd2490fb84c87d7897f5ceac78da8f512 Mon Sep 17 00:00:00 2001 From: Bill Hoffman Date: Wed, 28 Apr 2010 17:42:22 -0400 Subject: Fix for bug #10550, work around instantiation out of scope --- Source/kwsys/hashtable.hxx.in | 12 +++++++++--- Source/kwsys/testAutoPtr.cxx | 2 +- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/Source/kwsys/hashtable.hxx.in b/Source/kwsys/hashtable.hxx.in index b36c975..2b80f4b 100644 --- a/Source/kwsys/hashtable.hxx.in +++ b/Source/kwsys/hashtable.hxx.in @@ -388,6 +388,10 @@ struct _Hashtable_const_iterator { // Note: assumes long is at least 32 bits. enum { _stl_num_primes = 31 }; +// create a function with a static local to that function that returns +// the static +const unsigned long* get_stl_prime_list() { + static const unsigned long _stl_prime_list[_stl_num_primes] = { 5ul, 11ul, 23ul, @@ -399,10 +403,12 @@ static const unsigned long _stl_prime_list[_stl_num_primes] = 1610612741ul, 3221225473ul, 4294967291ul }; +return &_stl_prime_list[0]; } + inline size_t _stl_next_prime(size_t __n) { - const unsigned long* __first = _stl_prime_list; - const unsigned long* __last = _stl_prime_list + (int)_stl_num_primes; + const unsigned long* __first = get_stl_prime_list(); + const unsigned long* __last = get_stl_prime_list() + (int)_stl_num_primes; const unsigned long* pos = @KWSYS_NAMESPACE@_stl::lower_bound(__first, __last, __n); return pos == __last ? *(__last - 1) : *pos; } @@ -587,7 +593,7 @@ public: size_type bucket_count() const { return _M_buckets.size(); } size_type max_bucket_count() const - { return _stl_prime_list[(int)_stl_num_primes - 1]; } + { return get_stl_prime_list()[(int)_stl_num_primes - 1]; } size_type elems_in_bucket(size_type __bucket) const { diff --git a/Source/kwsys/testAutoPtr.cxx b/Source/kwsys/testAutoPtr.cxx index 747d869..ed75ff4 100644 --- a/Source/kwsys/testAutoPtr.cxx +++ b/Source/kwsys/testAutoPtr.cxx @@ -25,7 +25,7 @@ #define ASSERT(x,y) if (!(x)) { printf("FAIL: " y "\n"); status = 1; } -static int instances = 0; +int instances = 0; // don't declare as static struct A { -- cgit v0.12