Thread overview
Object removing own last reference.
Jun 25, 2010
strtr
Jun 25, 2010
marksibly
Jun 25, 2010
Simen kjaeraas
Jun 25, 2010
strtr
June 25, 2010
void externalFunc(){}

class C
{
  ..
  int index_;
  int yay;
  void removeMe()
  {
    //remove last reference to this object
    objects[_index] = null;

    //other critical code
    memberFunc();
    externalFunc();
  }
  void memberFunc(){yay++}
}

Is there anything unsafe about his code? Like the GC removing the Object before calling memberFunc..

June 25, 2010
Hi,

Shouldn't be as 'this' will keep the object alive as long as necessary.

Mark
June 25, 2010
strtr <strtr@sp.am> wrote:

>
> void externalFunc(){}
>
> class C
> {
>   ..
>   int index_;
>   int yay;
>   void removeMe()
>   {
>     //remove last reference to this object
>     objects[_index] = null;
>
>     //other critical code
>     memberFunc();
>     externalFunc();
>   }
>   void memberFunc(){yay++}
> }
>
> Is there anything unsafe about his code? Like the GC removing the Object
> before calling memberFunc..

A reference to it will still be on the stack, so it should be no problem.

-- 
Simen
June 25, 2010
== Quote from Simen kjaeraas (simen.kjaras@gmail.com)'s article
> strtr <strtr@sp.am> wrote:
> >
> > void externalFunc(){}
> >
> > class C
> > {
> >   ..
> >   int index_;
> >   int yay;
> >   void removeMe()
> >   {
> >     //remove last reference to this object
> >     objects[_index] = null;
> >
> >     //other critical code
> >     memberFunc();
> >     externalFunc();
> >   }
> >   void memberFunc(){yay++}
> > }
> >
> > Is there anything unsafe about his code? Like the GC removing the Object before calling memberFunc..
> A reference to it will still be on the stack, so it should be no problem.

The "this" marksibly mentioned. Thanks peoples ;)