summaryrefslogtreecommitdiff
path: root/base/dir_reader_linux.h
diff options
context:
space:
mode:
Diffstat (limited to 'base/dir_reader_linux.h')
-rw-r--r--base/dir_reader_linux.h13
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;
}