Patchwork PR libstdc++/54576: random_device isn't protected by _GLIBCXX_USE_C99_STDINT_TR1

login
register
mail settings
Submitter H.J. Lu
Date Sept. 14, 2012, 1:16 a.m.
Message ID <20120914011642.GA32163@intel.com>
Download mbox | patch
Permalink /patch/183770/
State New
Headers show

Comments

H.J. Lu - Sept. 14, 2012, 1:16 a.m.
Hi,

include/random has

#ifdef _GLIBCXX_USE_C99_STDINT_TR1

#include <cstdint> // For uint_fast32_t, uint_fast64_t, uint_least32_t
#include <bits/random.h>
#include <bits/random.tcc>

#endif // _GLIBCXX_USE_C99_STDINT_TR1

random_device is defined in <bits/random.h>. But src/c++11/random.cc
has

#include <random>
...
  void
  random_device::_M_init(const std::string& token)
  {

It doesn't check if _GLIBCXX_USE_C99_STDINT_TR1 is defined.  This
patch checks it.  OK to install?

Thanks.


H.J.
--
2012-09-13  H.J. Lu  <hongjiu.lu@intel.com>

	PR libstdc++/54576
	* libstdc++-v3/src/c++11/random.cc: Check if
	_GLIBCXX_USE_C99_STDINT_TR1 is defined.
Paolo Carlini - Sept. 14, 2012, 9:47 a.m.
Hi,

On 09/14/2012 03:16 AM, H.J. Lu wrote:
> Hi,
>
> include/random has
>
> #ifdef _GLIBCXX_USE_C99_STDINT_TR1
>
> #include <cstdint> // For uint_fast32_t, uint_fast64_t, uint_least32_t
> #include <bits/random.h>
> #include <bits/random.tcc>
>
> #endif // _GLIBCXX_USE_C99_STDINT_TR1
>
> random_device is defined in <bits/random.h>. But src/c++11/random.cc
> has
>
> #include <random>
> ...
>    void
>    random_device::_M_init(const std::string& token)
>    {
>
> It doesn't check if _GLIBCXX_USE_C99_STDINT_TR1 is defined.  This
> patch checks it.  OK to install?
I thought this was already history, because it's a Dup.

Anyway, the obvious patch is Ok, thanks, but please put a blank line 
right after "#ifdef _GLIBCXX_USE_C99_STDINT_TR1"-

Thanks!
Paolo.

Patch

diff --git a/libstdc++-v3/src/c++11/random.cc b/libstdc++-v3/src/c++11/random.cc
index 4342df4..bb51fba 100644
--- a/libstdc++-v3/src/c++11/random.cc
+++ b/libstdc++-v3/src/c++11/random.cc
@@ -24,6 +24,7 @@ 
 
 #include <random>
 
+#ifdef  _GLIBCXX_USE_C99_STDINT_TR1
 #if defined __i386__ || defined __x86_64__
 # include <cpuid.h>
 #endif
@@ -144,3 +145,4 @@  namespace std _GLIBCXX_VISIBILITY(default)
     0xefc60000UL, 18, 1812433253UL>;
 
 }
+#endif