From c238e8ea86ee540a988bd96bfa52269c65aae92d Mon Sep 17 00:00:00 2001 From: Martin Willi Date: Fri, 29 Apr 2011 13:49:24 +0200 Subject: [PATCH] Added an equals function to backtrace_t --- src/libstrongswan/utils/backtrace.c | 25 +++++++++++++++++++++++++ src/libstrongswan/utils/backtrace.h | 8 ++++++++ 2 files changed, 33 insertions(+) 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, }; diff --git a/src/libstrongswan/utils/backtrace.h b/src/libstrongswan/utils/backtrace.h index e8ccfc1bd..cf4d27770 100644 --- a/src/libstrongswan/utils/backtrace.h +++ b/src/libstrongswan/utils/backtrace.h @@ -49,6 +49,14 @@ struct backtrace_t { */ bool (*contains_function)(backtrace_t *this, char *function[], int count); + /** + * Check two backtraces for equality. + * + * @param other backtrace to compare to this + * @return TRUE if backtraces are equal + */ + bool (*equals)(backtrace_t *this, backtrace_t *other); + /** * Destroy a backtrace instance. */