diff options
| author | paolo <paolo@138bc75d-0d04-0410-961f-82ee72b054a4> | 2013-07-22 15:22:52 +0000 |
|---|---|---|
| committer | paolo <paolo@138bc75d-0d04-0410-961f-82ee72b054a4> | 2013-07-22 15:22:52 +0000 |
| commit | 9b9e702bcde3b0838918dea11e537b878ec18491 (patch) | |
| tree | 5a680837da70bd375bf6a218dbb0ae584a14fbcc /libstdc++-v3/src | |
| parent | 73bd65ab6128e7cd125c5baac6c82495792e8651 (diff) | |
| download | ppe42-gcc-9b9e702bcde3b0838918dea11e537b878ec18491.tar.gz ppe42-gcc-9b9e702bcde3b0838918dea11e537b878ec18491.zip | |
2013-07-22 Paolo Carlini <paolo.carlini@oracle.com>
PR c++/57920
* src/c++11/random.cc (random_device::_M_getval): If possible, use
read instead of std::fread.
* include/std/random: Do not include <cstdio> unnecessarily.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@201133 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'libstdc++-v3/src')
| -rw-r--r-- | libstdc++-v3/src/c++11/random.cc | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/libstdc++-v3/src/c++11/random.cc b/libstdc++-v3/src/c++11/random.cc index 2bd713260a2..1646786882a 100644 --- a/libstdc++-v3/src/c++11/random.cc +++ b/libstdc++-v3/src/c++11/random.cc @@ -30,6 +30,11 @@ # include <cpuid.h> #endif +#include <cstdio> + +#ifdef _GLIBCXX_HAVE_UNISTD_H +# include <unistd.h> +#endif namespace std _GLIBCXX_VISIBILITY(default) { @@ -126,8 +131,12 @@ namespace std _GLIBCXX_VISIBILITY(default) #endif result_type __ret; +#ifdef _GLIBCXX_HAVE_UNISTD_H + read(fileno(_M_file), reinterpret_cast<void*>(&__ret), sizeof(result_type)); +#else std::fread(reinterpret_cast<void*>(&__ret), sizeof(result_type), 1, _M_file); +#endif return __ret; } |

