From: liuchang0812 Date: Wed, 22 Mar 2017 09:27:20 +0000 (+0800) Subject: rgw/rgw_op: fix memory leak in RGWGetObjLayout X-Git-Tag: v12.0.2~336^2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=refs%2Fpull%2F14014%2Fhead;p=ceph.git rgw/rgw_op: fix memory leak in RGWGetObjLayout Signed-off-by: liuchang0812 --- diff --git a/src/rgw/rgw_op.cc b/src/rgw/rgw_op.cc index aaf7f96438c..468d4f85ad8 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 a6eff0e710d..ef932306b75 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) {