diff options
Diffstat (limited to 'base/dir_reader_linux.h')
-rw-r--r-- | base/dir_reader_linux.h | 13 |
1 files changed, 10 insertions, 3 deletions
diff --git a/base/dir_reader_linux.h b/base/dir_reader_linux.h index 2b833347..b50e17ce 100644 --- a/base/dir_reader_linux.h +++ b/base/dir_reader_linux.h @@ -49,7 +49,11 @@ class DirReaderLinux { // Move to the next entry returning false if the iteration is complete. bool Next() { if (size_) { - linux_dirent* dirent = reinterpret_cast<linux_dirent*>(&buf_[offset_]); + union { + const unsigned char *bufp; + const linux_dirent* dirent; + }; + bufp = &buf_[offset_]; offset_ += dirent->d_reclen; } @@ -72,8 +76,11 @@ class DirReaderLinux { if (!size_) return NULL; - const linux_dirent* dirent = - reinterpret_cast<const linux_dirent*>(&buf_[offset_]); + union { + const unsigned char *bufp; + const linux_dirent* dirent; + }; + bufp = &buf_[offset_]; return dirent->d_name; } |