summaryrefslogtreecommitdiffstats
path: root/Source/kwsys/hashtable.hxx.in
diff options
context:
space:
mode:
authorBill Hoffman <bill.hoffman@kitware.com>2010-04-28 21:42:22 (GMT)
committerBill Hoffman <bill.hoffman@kitware.com>2010-04-28 21:42:22 (GMT)
commita170690fd2490fb84c87d7897f5ceac78da8f512 (patch)
tree596b619f780b24b5266e8c6cf96788c6165b879b /Source/kwsys/hashtable.hxx.in
parent9e99ac58793d8e99df37bda06097c76a0649702e (diff)
downloadCMake-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.in12
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
{