summaryrefslogtreecommitdiffstats
path: root/libstdc++-v3/src
diff options
context:
space:
mode:
authorpaolo <paolo@138bc75d-0d04-0410-961f-82ee72b054a4>2013-07-22 15:22:52 +0000
committerpaolo <paolo@138bc75d-0d04-0410-961f-82ee72b054a4>2013-07-22 15:22:52 +0000
commit9b9e702bcde3b0838918dea11e537b878ec18491 (patch)
tree5a680837da70bd375bf6a218dbb0ae584a14fbcc /libstdc++-v3/src
parent73bd65ab6128e7cd125c5baac6c82495792e8651 (diff)
downloadppe42-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.cc9
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;
}
OpenPOWER on IntegriCloud