diff options
Diffstat (limited to 'src/processor/windows_frame_info.h')
-rw-r--r-- | src/processor/windows_frame_info.h | 16 |
1 files changed, 12 insertions, 4 deletions
diff --git a/src/processor/windows_frame_info.h b/src/processor/windows_frame_info.h index 067f3cfd..3aa7b3f6 100644 --- a/src/processor/windows_frame_info.h +++ b/src/processor/windows_frame_info.h @@ -72,7 +72,8 @@ struct WindowsFrameInfo { STACK_INFO_UNKNOWN = -1 }; - WindowsFrameInfo() : valid(VALID_NONE), + WindowsFrameInfo() : type_(STACK_INFO_UNKNOWN), + valid(VALID_NONE), prolog_size(0), epilog_size(0), parameter_size(0), @@ -82,7 +83,8 @@ struct WindowsFrameInfo { allocates_base_pointer(0), program_string() {} - WindowsFrameInfo(u_int32_t set_prolog_size, + WindowsFrameInfo(StackInfoTypes type, + u_int32_t set_prolog_size, u_int32_t set_epilog_size, u_int32_t set_parameter_size, u_int32_t set_saved_register_size, @@ -90,7 +92,8 @@ struct WindowsFrameInfo { u_int32_t set_max_stack_size, int set_allocates_base_pointer, const std::string set_program_string) - : valid(VALID_ALL), + : type_(type), + valid(VALID_ALL), prolog_size(set_prolog_size), epilog_size(set_epilog_size), parameter_size(set_parameter_size), @@ -140,7 +143,8 @@ struct WindowsFrameInfo { allocates_base_pointer = strtoul(tokens[10], NULL, 16); } - return new WindowsFrameInfo(prolog_size, + return new WindowsFrameInfo(static_cast<StackInfoTypes>(type), + prolog_size, epilog_size, parameter_size, saved_register_size, @@ -152,6 +156,7 @@ struct WindowsFrameInfo { // CopyFrom makes "this" WindowsFrameInfo object identical to "that". void CopyFrom(const WindowsFrameInfo &that) { + type_ = that.type_; valid = that.valid; prolog_size = that.prolog_size; epilog_size = that.epilog_size; @@ -166,10 +171,13 @@ struct WindowsFrameInfo { // Clears the WindowsFrameInfo object so that users will see it as though // it contains no information. void Clear() { + type_ = STACK_INFO_UNKNOWN; valid = VALID_NONE; program_string.erase(); } + StackInfoTypes type_; + // Identifies which fields in the structure are valid. This is of // type Validity, but it is defined as an int because it's not // possible to OR values into an enumerated type. Users must check |