From 384496dbd12cc7feaa632ea96c9fe62950f62726 Mon Sep 17 00:00:00 2001 From: liuchang0812 Date: Wed, 22 Mar 2017 17:27:20 +0800 Subject: [PATCH] rgw/rgw_op: fix memory leak in RGWGetObjLayout Signed-off-by: liuchang0812 --- src/rgw/rgw_op.cc | 9 ++++++--- src/rgw/rgw_op.h | 2 -- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/src/rgw/rgw_op.cc b/src/rgw/rgw_op.cc index aaf7f96438cf..468d4f85ad88 100644 --- a/src/rgw/rgw_op.cc +++ b/src/rgw/rgw_op.cc @@ -5526,8 +5526,11 @@ void RGWGetObjLayout::pre_exec() void RGWGetObjLayout::execute() { rgw_obj obj(s->bucket, s->object); - target = new RGWRados::Object(store, s->bucket_info, *static_cast(s->obj_ctx), rgw_obj(s->bucket, s->object)); - RGWRados::Object::Read stat_op(target); + RGWRados::Object target(store, + s->bucket_info, + *static_cast(s->obj_ctx), + rgw_obj(s->bucket, s->object)); + RGWRados::Object::Read stat_op(&target); op_ret = stat_op.prepare(); if (op_ret < 0) { @@ -5536,7 +5539,7 @@ void RGWGetObjLayout::execute() head_obj = stat_op.state.head_obj; - op_ret = target->get_manifest(&manifest); + op_ret = target.get_manifest(&manifest); } diff --git a/src/rgw/rgw_op.h b/src/rgw/rgw_op.h index a6eff0e710df..ef932306b750 100644 --- a/src/rgw/rgw_op.h +++ b/src/rgw/rgw_op.h @@ -1768,13 +1768,11 @@ public: class RGWGetObjLayout : public RGWOp { protected: - RGWRados::Object *target{nullptr}; RGWObjManifest *manifest{nullptr}; rgw_raw_obj head_obj; public: RGWGetObjLayout() { - delete target; } int check_caps(RGWUserCaps& caps) { -- 2.47.3