diff options
| author | paolo <paolo@138bc75d-0d04-0410-961f-82ee72b054a4> | 2013-07-24 15:42:06 +0000 |
|---|---|---|
| committer | paolo <paolo@138bc75d-0d04-0410-961f-82ee72b054a4> | 2013-07-24 15:42:06 +0000 |
| commit | 0542766976e4d9b2d2d460625ad9a7732d04b64a (patch) | |
| tree | e3393e23fa07c37c8b5a59a402016f4bad3f6f0b /libstdc++-v3/src | |
| parent | 6d74a96b7de59131dac76fc8a0b05aa45114ed9f (diff) | |
| download | ppe42-gcc-0542766976e4d9b2d2d460625ad9a7732d04b64a.tar.gz ppe42-gcc-0542766976e4d9b2d2d460625ad9a7732d04b64a.zip | |
2013-07-24 Paolo Carlini <paolo.carlini@oracle.com>
* include/bits/random.h (random_device): Avoid using the FILE type.
* include/std/random: Do not include <cstdio>.
* src/c++11/random.cc: ... include it here.
(random_device::_M_init, random_device::_M_fini,
random_device::_M_getval): Cast back and forth void* and FILE*.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@201215 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'libstdc++-v3/src')
| -rw-r--r-- | libstdc++-v3/src/c++11/random.cc | 19 |
1 files changed, 10 insertions, 9 deletions
diff --git a/libstdc++-v3/src/c++11/random.cc b/libstdc++-v3/src/c++11/random.cc index b62f4f7e6b7..939bf02583c 100644 --- a/libstdc++-v3/src/c++11/random.cc +++ b/libstdc++-v3/src/c++11/random.cc @@ -30,13 +30,14 @@ # include <cpuid.h> #endif +#include <cstdio> + #ifdef _GLIBCXX_HAVE_UNISTD_H # include <unistd.h> #endif namespace std _GLIBCXX_VISIBILITY(default) { - namespace { static unsigned long @@ -72,7 +73,6 @@ namespace std _GLIBCXX_VISIBILITY(default) #endif } - void random_device::_M_init(const std::string& token) { @@ -102,8 +102,8 @@ namespace std _GLIBCXX_VISIBILITY(default) std::__throw_runtime_error(__N("random_device::" "random_device(const std::string&)")); - _M_file = std::fopen(fname, "rb"); - if (! _M_file) + _M_file = static_cast<void*>(std::fopen(fname, "rb")); + if (!_M_file) goto fail; } @@ -117,23 +117,24 @@ namespace std _GLIBCXX_VISIBILITY(default) random_device::_M_fini() { if (_M_file) - std::fclose(_M_file); + std::fclose(static_cast<FILE*>(_M_file)); } random_device::result_type random_device::_M_getval() { #if (defined __i386__ || defined __x86_64__) && defined _GLIBCXX_X86_RDRAND - if (! _M_file) + if (!_M_file) return __x86_rdrand(); #endif result_type __ret; #ifdef _GLIBCXX_HAVE_UNISTD_H - read(fileno(_M_file), reinterpret_cast<void*>(&__ret), sizeof(result_type)); + read(fileno(static_cast<FILE*>(_M_file)), + static_cast<void*>(&__ret), sizeof(result_type)); #else - std::fread(reinterpret_cast<void*>(&__ret), sizeof(result_type), - 1, _M_file); + std::fread(static_cast<void*>(&__ret), sizeof(result_type), + 1, static_cast<FILE*>(_M_file)); #endif return __ret; } |

