OLD | NEW |
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "base/debug/stack_trace.h" | 5 #include "base/debug/stack_trace.h" |
6 | 6 |
| 7 #include "base/basictypes.h" |
| 8 |
| 9 #include <string.h> |
| 10 |
| 11 #include <algorithm> |
| 12 |
7 namespace base { | 13 namespace base { |
8 namespace debug { | 14 namespace debug { |
9 | 15 |
| 16 StackTrace::StackTrace(const void* const* trace, size_t count) { |
| 17 count = std::min(count, arraysize(trace_)); |
| 18 if (count) |
| 19 memcpy(trace_, trace, count * sizeof(trace_[0])); |
| 20 count_ = static_cast<int>(count); |
| 21 } |
| 22 |
10 StackTrace::~StackTrace() { | 23 StackTrace::~StackTrace() { |
11 } | 24 } |
12 | 25 |
13 const void *const *StackTrace::Addresses(size_t* count) const { | 26 const void *const *StackTrace::Addresses(size_t* count) const { |
14 *count = count_; | 27 *count = count_; |
15 if (count_) | 28 if (count_) |
16 return trace_; | 29 return trace_; |
17 return NULL; | 30 return NULL; |
18 } | 31 } |
19 | 32 |
20 } // namespace debug | 33 } // namespace debug |
21 } // namespace base | 34 } // namespace base |
OLD | NEW |