Backport #1547

Fiber#alive? Returns 0 for true on 1.9.1

Added by runpaint (Run Paint Run Run) almost 3 years ago. Updated about 1 year ago.

[ruby-core:23649]
Status:Rejected Start date:06/01/2009
Priority:Normal Due date:
Assignee:yugui (Yuki Sonoda) % Done:

0%

Category:core
Target version:-

Description

When a Fiber is alive, Fiber#alive? returns 0 on 1.9.1; true on 1.9.2. The latter behaviour is consistent with the documentation.

  $ ruby91 -rfiber -ve 'f=Fiber.new {1}; p f.alive?; f.resume; p f.alive?'
  ruby 1.9.1p154 (2009-05-22 revision 23541) [i686-linux]
  0
  false

  $ rubybleed -rfiber -ve 'f=Fiber.new {1}; p f.alive?; f.resume; p f.alive?'
  ruby 1.9.2dev (2009-05-28 trunk 23601) [i686-linux]
  true
  false

branches/ruby_1_9_1/cont.c:

  rb_fiber_alive_p(VALUE fibval)
  {
    rb_fiber_t *fib;
    GetFiberPtr(fibval, fib);
    return fib->status != TERMINATED;
  }

trunk/cont.c:

  rb_fiber_alive_p(VALUE fibval)
  {
    rb_fiber_t *fib;
    GetFiberPtr(fibval, fib);
    return fib->status != TERMINATED ? Qtrue : Qfalse;
  }

History

Updated by nobu (Nobuyoshi Nakada) almost 3 years ago

  • Category set to core
  • Assignee set to yugui (Yuki Sonoda)

Updated by yugui (Yuki Sonoda) over 2 years ago

  • Status changed from Open to Rejected
It was probably a bug. but 0 is truth. I prefer not changing the behavior to fixing the bug.

Also available in: Atom PDF