From f33cdbe485d0e4b78a46657bfcb8d5c02d24be69 Mon Sep 17 00:00:00 2001 From: Xiong Yiliang Date: Fri, 6 Mar 2015 12:46:49 +0800 Subject: [PATCH] osdc: fix a memory leak in C_TwoContexts If an ObjectOperation op is cancelled, its destructor is called and each Context object in out_handler is deleted. A C_TwoContexts object can be one of these handlers. The two contexts wrapped in C_TwoContexts must be deleted as well. Signed-off-by: Xiong Yiliang --- src/osdc/Objecter.h | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/osdc/Objecter.h b/src/osdc/Objecter.h index fef7cd42cab..68c429d58f3 100644 --- a/src/osdc/Objecter.h +++ b/src/osdc/Objecter.h @@ -89,6 +89,13 @@ struct ObjectOperation { void finish(int r) { first->complete(r); second->complete(r); + first = NULL; + second = NULL; + } + + virtual ~C_TwoContexts() { + delete first; + delete second; } };