The fix I've used is to use move_and_slide_with_snap(). I believe that that's the most common way, I mainly used Garbaj's updated fps code, but I've added improvements. The only bug it comes with is that if you are right up against a short wall, and jump onto the wall, the character will snap onto the walls topside versus continuing the upward momentum for the jump. It only happens when right against the wall and when the player is moving towards it anyway, in which most instances they would want to land on the wall, so it's not the worst bug.
I'm curious about your fix though. What bugs does it fix/come with?