diff options
author | Bill Hoffman <bill.hoffman@kitware.com> | 2010-04-28 21:42:22 (GMT) |
---|---|---|
committer | Bill Hoffman <bill.hoffman@kitware.com> | 2010-04-28 21:42:22 (GMT) |
commit | a170690fd2490fb84c87d7897f5ceac78da8f512 (patch) | |
tree | 596b619f780b24b5266e8c6cf96788c6165b879b /Source/kwsys/hashtable.hxx.in | |
parent | 9e99ac58793d8e99df37bda06097c76a0649702e (diff) | |
download | CMake-a170690fd2490fb84c87d7897f5ceac78da8f512.zip CMake-a170690fd2490fb84c87d7897f5ceac78da8f512.tar.gz CMake-a170690fd2490fb84c87d7897f5ceac78da8f512.tar.bz2 |
Fix for bug #10550, work around instantiation out of scope
Diffstat (limited to 'Source/kwsys/hashtable.hxx.in')
-rw-r--r-- | Source/kwsys/hashtable.hxx.in | 12 |
1 files changed, 9 insertions, 3 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 { |