diff --git a/treeplayer/src/TTreePlayer.cxx b/treeplayer/src/TTreePlayer.cxx
index d8fbeef65fd50b3a0304e5575ee84d3e95af81e6..5242bfd01e740ee66272755b599f35bc6537abd9 100644
--- a/treeplayer/src/TTreePlayer.cxx
+++ b/treeplayer/src/TTreePlayer.cxx
@@ -1,4 +1,4 @@
-// @(#)root/treeplayer:$Name:  $:$Id: TTreePlayer.cxx,v 1.220 2006/07/05 17:29:05 pcanal Exp $
+// @(#)root/treeplayer:$Name:  $:$Id: TTreePlayer.cxx,v 1.221 2006/07/06 08:29:46 brun Exp $
 // Author: Rene Brun   12/01/96
 
 /*************************************************************************
@@ -371,6 +371,16 @@ TTree *TTreePlayer::CopyTree(const char *selection, Option_t *, Long64_t nentrie
    TTree *tree = fTree->CloneTree(0);
    if (tree == 0) return 0;
 
+   // The clone should not delete any shared i/o buffers.
+   TObjArray* branches = tree->GetListOfBranches();
+   Int_t nb = branches->GetEntriesFast();
+   for (Int_t i = 0; i < nb; ++i) {
+      TBranch* br = (TBranch*) branches->UncheckedAt(i);
+      if (br->InheritsFrom("TBranchElement")) {
+         ((TBranchElement*) br)->ResetDeleteObject();
+      }
+   }
+
    Long64_t entry,entryNumber;
    nentries = GetEntriesToProcess(firstentry, nentries);