summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--main/cdr.c12
1 files changed, 2 insertions, 10 deletions
diff --git a/main/cdr.c b/main/cdr.c
index 4bcfc05b3..6a5b33cbd 100644
--- a/main/cdr.c
+++ b/main/cdr.c
@@ -754,11 +754,7 @@ static void free_variables(struct varshead *headp)
*/
static void cdr_object_snapshot_copy(struct cdr_object_snapshot *dst, struct cdr_object_snapshot *src)
{
- if (dst->snapshot) {
- ao2_t_ref(dst->snapshot, -1, "release old snapshot during copy");
- }
- dst->snapshot = src->snapshot;
- ao2_t_ref(dst->snapshot, +1, "bump new snapshot during copy");
+ ao2_t_replace(dst->snapshot, src->snapshot, "CDR snapshot copy");
strcpy(dst->userfield, src->userfield);
dst->flags = src->flags;
copy_variables(&dst->variables, &src->variables);
@@ -1361,11 +1357,7 @@ static void cdr_object_swap_snapshot(struct cdr_object_snapshot *old_snapshot,
struct ast_channel_snapshot *new_snapshot)
{
cdr_object_update_cid(old_snapshot, new_snapshot);
- if (old_snapshot->snapshot) {
- ao2_t_ref(old_snapshot->snapshot, -1, "Drop ref for swap");
- }
- ao2_t_ref(new_snapshot, +1, "Bump ref for swap");
- old_snapshot->snapshot = new_snapshot;
+ ao2_t_replace(old_snapshot->snapshot, new_snapshot, "Swap CDR shapshot");
}
/* BASE METHOD IMPLEMENTATIONS */