aboutsummaryrefslogtreecommitdiffstats
path: root/save_backtrace.c
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--save_backtrace.c12
1 files changed, 9 insertions, 3 deletions
diff --git a/save_backtrace.c b/save_backtrace.c
index e366abf..7214fa4 100644
--- a/save_backtrace.c
+++ b/save_backtrace.c
@@ -53,9 +53,15 @@ liberror_save_backtrace(struct liberror_error *error)
ret = 0;
out:
- if (error->backtrace && !--error->backtrace->refcount)
- free(error->backtrace);
- error->backtrace = backtrace;
+ if (error) {
+ if (error->backtrace && !--error->backtrace->refcount)
+ free(error->backtrace);
+ error->backtrace = backtrace;
+ } else {
+ if (liberror_saved_backtrace && !--liberror_saved_backtrace->refcount)
+ free(liberror_saved_backtrace);
+ liberror_saved_backtrace = backtrace;
+ }
errno = saved_errno;
return ret;
}