diff --git a/rtc_base/physical_socket_server.cc b/rtc_base/physical_socket_server.cc index 71da31ecec..af133b8529 100644 --- a/rtc_base/physical_socket_server.cc +++ b/rtc_base/physical_socket_server.cc @@ -10,6 +10,7 @@ #include "rtc_base/physical_socket_server.h" #include +#include #include #if defined(_MSC_VER) && _MSC_VER < 1300 @@ -549,10 +550,11 @@ int PhysicalSocket::DoReadFromSocket(void* buffer, if (cmsg->cmsg_level != SOL_SOCKET) continue; if (timestamp && cmsg->cmsg_type == SCM_TIMESTAMP) { - timeval* ts = reinterpret_cast(CMSG_DATA(cmsg)); + timeval ts; + std::memcpy(static_cast(&ts), CMSG_DATA(cmsg), sizeof(ts)); *timestamp = - rtc::kNumMicrosecsPerSec * static_cast(ts->tv_sec) + - static_cast(ts->tv_usec); + rtc::kNumMicrosecsPerSec * static_cast(ts.tv_sec) + + static_cast(ts.tv_usec); } } }