Err...

  irb(main):001:0> def x; 1; end
  => nil
  irb(main):002:0> p x
  1
  => nil
  irb(main):003:0> if false
  irb(main):004:1>   x = x() + 1
  irb(main):005:1> end
  => nil
  irb(main):006:0> x
  => nil

Don't tell me, it's some quirk of the way Ruby works. Sure looks like
a bug though. Just in case:

  ruby 1.8.4 (2005-12-24) [i486-linux]

Hmm... I just got a dejavu. Maybe I came across this before.

T.