Flip the ownership of MCStreamer and MCTargetStreamer.
authorBenjamin Kramer <benny.kra@googlemail.com>
Wed, 9 Oct 2013 17:23:41 +0000 (17:23 +0000)
committerBenjamin Kramer <benny.kra@googlemail.com>
Wed, 9 Oct 2013 17:23:41 +0000 (17:23 +0000)
MCStreamer now owns the target streamer. This prevents leaking the target
streamer.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@192303 91177308-0d34-0410-b5e6-96231b3b80d8

include/llvm/MC/MCStreamer.h
lib/Target/ARM/MCTargetDesc/ARMELFStreamer.cpp

index 10fc69ef8404c4ddee750af2a8c027ae99d34989..d24f3fd4be278f9314f56b3d59fa33990f438ae2 100644 (file)
@@ -66,11 +66,11 @@ typedef std::pair<const MCSection *, const MCExpr *> MCSectionSubPair;
 /// be treated differently. Callers should always talk to a FooTargetStreamer.
 class MCTargetStreamer {
 protected:
-  OwningPtr<MCStreamer> Streamer;
+  MCStreamer *Streamer;
 
 public:
   virtual ~MCTargetStreamer();
-  void setStreamer(MCStreamer *S) { Streamer.reset(S); }
+  void setStreamer(MCStreamer *S) { Streamer = S; }
 };
 
 // FIXME: declared here because it is used from
@@ -100,7 +100,7 @@ public:
 ///
 class MCStreamer {
   MCContext &Context;
-  MCTargetStreamer *TargetStreamer;
+  OwningPtr<MCTargetStreamer> TargetStreamer;
 
   MCStreamer(const MCStreamer &) LLVM_DELETED_FUNCTION;
   MCStreamer &operator=(const MCStreamer &) LLVM_DELETED_FUNCTION;
index 867782b791b4ee5c1b16f68bfc75ccbf2d6c8840..d4110a45d66c4029af3ffa641bab5ab8dba38d45 100644 (file)
@@ -305,7 +305,7 @@ private:
 } // end anonymous namespace
 
 ARMELFStreamer &ARMTargetELFStreamer::getStreamer() {
-  ARMELFStreamer *S = static_cast<ARMELFStreamer *>(Streamer.get());
+  ARMELFStreamer *S = static_cast<ARMELFStreamer *>(Streamer);
   return *S;
 }