Backport to ruby 1.8.3