]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
rgw/rgw_op: fix memory leak in RGWGetObjLayout 14014/head
authorliuchang0812 <liuchang0812@gmail.com>
Wed, 22 Mar 2017 09:27:20 +0000 (17:27 +0800)
committerliuchang0812 <liuchang0812@gmail.com>
Wed, 22 Mar 2017 09:27:20 +0000 (17:27 +0800)
Signed-off-by: liuchang0812 <liuchang0812@gmail.com>
src/rgw/rgw_op.cc
src/rgw/rgw_op.h

index aaf7f96438cf9d629434d5fd2717c44ce2b8cb01..468d4f85ad88f4e5732ef1d47396e068269dca95 100644 (file)
@@ -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<RGWObjectCtx *>(s->obj_ctx), rgw_obj(s->bucket, s->object));
-  RGWRados::Object::Read stat_op(target);
+  RGWRados::Object target(store,
+                          s->bucket_info,
+                          *static_cast<RGWObjectCtx *>(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);
 }
 
 
index a6eff0e710df00838410c4ea0eb9484184d83618..ef932306b75087cb85a388db4baf40b7cb9e5228 100644 (file)
@@ -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) {