fixes #2792 - only touch if writable