mirror of
https://github.com/chromium/crashpad.git
synced 2025-03-09 22:16:13 +00:00
Fix problems discovered with gcc 4.9.1.
BUG= R=rsesek@chromium.org Review URL: https://codereview.chromium.org/538233002
This commit is contained in:
parent
4f74716f6d
commit
35865a00d5
@ -362,7 +362,7 @@ void ExpectSeveralThreads(ThreadMap* thread_map,
|
||||
thread.stack_region_address >= other_thread.stack_region_address &&
|
||||
thread.stack_region_address < other_thread_stack_region_end);
|
||||
EXPECT_FALSE(
|
||||
thread_stack_region_end > other_thread.stack_region_address &
|
||||
thread_stack_region_end > other_thread.stack_region_address &&
|
||||
thread_stack_region_end <= other_thread_stack_region_end);
|
||||
}
|
||||
}
|
||||
|
@ -86,7 +86,11 @@ class InitializationState {
|
||||
void set_state(State state) { state_ = state; }
|
||||
|
||||
private:
|
||||
State state_;
|
||||
// state_ is volatile to ensure that it’ll be set by the destructor when it
|
||||
// runs. Otherwise, optimizations might prevent it from ever being set to
|
||||
// kStateDestroyed, limiting this class’ ability to catch use-after-free
|
||||
// errors.
|
||||
volatile State state_;
|
||||
|
||||
DISALLOW_COPY_AND_ASSIGN(InitializationState);
|
||||
};
|
||||
|
@ -164,15 +164,29 @@ class InitializationStateDcheck : public InitializationState {
|
||||
// objects of the DCHECK_IS_ON InitializationStateDcheck class above.
|
||||
typedef bool InitializationStateDcheck[0];
|
||||
|
||||
namespace internal {
|
||||
|
||||
// This function exists to make use of the InitializationStateDcheck object so
|
||||
// that it appears to be used. It always returns true, so that it can be used
|
||||
// as the argument to a no-op DCHECK.
|
||||
inline bool EatInitializationState(const InitializationStateDcheck*) {
|
||||
return true;
|
||||
}
|
||||
|
||||
} // namepspace internal
|
||||
|
||||
// The contents of these DCHECKs will never be evaluated, but they make use of
|
||||
// initialization_state_dcheck to avoid triggering -Wunused-private-field
|
||||
// warnings.
|
||||
#define INITIALIZATION_STATE_SET_INITIALIZING(initialization_state_dcheck) \
|
||||
DCHECK(&(initialization_state_dcheck))
|
||||
DCHECK(::crashpad::internal::EatInitializationState( \
|
||||
&(initialization_state_dcheck)))
|
||||
#define INITIALIZATION_STATE_SET_VALID(initialization_state_dcheck) \
|
||||
DCHECK(&(initialization_state_dcheck))
|
||||
DCHECK(::crashpad::internal::EatInitializationState( \
|
||||
&(initialization_state_dcheck)))
|
||||
#define INITIALIZATION_STATE_DCHECK_VALID(initialization_state_dcheck) \
|
||||
DCHECK(&(initialization_state_dcheck))
|
||||
DCHECK(::crashpad::internal::EatInitializationState( \
|
||||
&(initialization_state_dcheck)))
|
||||
|
||||
#endif
|
||||
|
||||
|
@ -17,6 +17,7 @@
|
||||
#include <dirent.h>
|
||||
#include <errno.h>
|
||||
#include <fcntl.h>
|
||||
#include <limits.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <unistd.h>
|
||||
|
Loading…
x
Reference in New Issue
Block a user