It was fixed by the following commit, which is a more general fix than just %+:
Author: Father Chrysostomos <email@example.com>
Date: Wed Jan 4 23:28:54 2012 -0800
[perl #95548] Returned magical temps are not copied
return and leavesub, for speed, were not copying temp variables wi
refcount of 1, which is fine as long as the fact that it was not c
ied is not observable.
With magical variables, that *can* be observed, so we have to fore
the optimisation and copy the variable if its magical.
This obviously applies only to rvalue subs.