I agree there is a pointless, regaining and release of the crit at end - which was not there before.
But this is far from time critical code and the assured block destructor to release was what I was after, and used existing constructs to do so. But yes, I could code it differently to avoid the needless final enter()/leave() that happens now.