diff --git a/tree/tree/src/TTreeCache.cxx b/tree/tree/src/TTreeCache.cxx
index 47f75cf75e0eb25e0187bf3cb4b4800ee00b8e36..85e5cb62effd8c7ad13fa4ef7ce9e86b3a56e6a8 100644
--- a/tree/tree/src/TTreeCache.cxx
+++ b/tree/tree/src/TTreeCache.cxx
@@ -279,9 +279,10 @@ Bool_t TTreeCache::FillBuffer()
       if (!lbaskets || !entries) continue;
       //we have found the branch. We now register all its baskets
       //from the requested offset to the basket below fEntrymax
+      Int_t blistsize = b->GetListOfBaskets()->GetSize();
       for (Int_t j=0;j<nb;j++) {
          // This basket has already been read, skip it
-         if (b->GetListOfBaskets()->UncheckedAt(j)) continue;
+         if (j<blistsize && b->GetListOfBaskets()->UncheckedAt(j)) continue;
 
          Long64_t pos = b->GetBasketSeek(j);
          Int_t len = lbaskets[j];