I want  to do some extended processing  on an object referred  to by a
weakref.  This might generate lots of  garbage so I don't want to turn
off garbage  collection while I'm doing  this.  So I'd  really like to
get  a proper non-weak  reference to  the weakref-ed  object (assuming
it's not *already* garbage-collected).  Is it safe to do this?

    obj = weakref.__getobj__ # will raise error if weakref is invalid
    process obj

I'm hoping this will ensure that  if the process method is called then
it gets  a real  reference to  the weakref-ed object,  so that  it can
safely execute even  though garbage collection is still  on.  I'm also
hoping that  once the binding  of the obj  variable goes out  of scope
then the object is available for garbage collection again.

Will  this work  as I  expect?   Is it  thread-safe?  Portable  across
different Ruby implementations?  Have I missed some race condition?

Regards,

Jeremy Henty