aboutsummaryrefslogtreecommitdiffstats
path: root/src/libstrongswan/utils/backtrace.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/libstrongswan/utils/backtrace.c')
-rw-r--r--src/libstrongswan/utils/backtrace.c25
1 files changed, 25 insertions, 0 deletions
diff --git a/src/libstrongswan/utils/backtrace.c b/src/libstrongswan/utils/backtrace.c
index 3f3707b5a..f69bd1538 100644
--- a/src/libstrongswan/utils/backtrace.c
+++ b/src/libstrongswan/utils/backtrace.c
@@ -152,6 +152,30 @@ METHOD(backtrace_t, contains_function, bool,
return FALSE;
}
+METHOD(backtrace_t, equals, bool,
+ private_backtrace_t *this, backtrace_t *other_public)
+{
+ private_backtrace_t *other = (private_backtrace_t*)other_public;
+ int i;
+
+ if (this == other)
+ {
+ return TRUE;
+ }
+ if (this->frame_count != other->frame_count)
+ {
+ return FALSE;
+ }
+ for (i = 0; i < this->frame_count; i++)
+ {
+ if (this->frames[i] != other->frames[i])
+ {
+ return FALSE;
+ }
+ }
+ return TRUE;
+}
+
METHOD(backtrace_t, destroy, void,
private_backtrace_t *this)
{
@@ -178,6 +202,7 @@ backtrace_t *backtrace_create(int skip)
this->public = (backtrace_t) {
.log = _log_,
.contains_function = _contains_function,
+ .equals = _equals,
.destroy = _destroy,
};