diff --git a/roofit/roofitcore/src/RooAbsArg.cxx b/roofit/roofitcore/src/RooAbsArg.cxx index e09b6ae7160d1a91eb49efb8c861e9459a5560e8..4d6b8d69dd8b1f0fc0d301e7d04f5c0755030a79 100644 --- a/roofit/roofitcore/src/RooAbsArg.cxx +++ b/roofit/roofitcore/src/RooAbsArg.cxx @@ -1000,7 +1000,11 @@ bool RooAbsArg::redirectServers(const RooAbsCollection& newSetOrig, bool mustRep { // Trivial case, no servers if (_serverList.empty()) return false ; - if (newSetOrig.empty()) return false ; + + // We don't need to do anything if there are no new servers or if the only + // new server is this RooAbsArg itself. And by returning early, we avoid + // potentially annoying side effects of the redirectServersHook. + if (newSetOrig.empty() || (newSetOrig.size() == 1 && newSetOrig[0] == this)) return false ; // Strip any non-matching removal nodes from newSetOrig RooAbsCollection* newSet ;