[Date Prev][Date Next][Thread Prev][Thread Next] [Search] [Date Index] [Thread Index]

[MacPerl] AEDisposeDesc problems



OK, I am having a nasty problem, and I think I've tracked it down.

Basically, when I construct an AE object with my _obj() constructor,
I later need to dispose of the descriptor manually.  I bless the
descriptor into its own class:

  bless({DESC=>$object}, 'AEObjDesc');

Then I set up a destrctor to dispose of it:

  sub AEObjDesc::DESTROY {
    AEDisposeDesc(shift()->{DESC});
  }

Fine.  But sometimes, it seems to be trying to destruct the descriptor
when it is still in use, or something.  I end up trashing the MacPerl
heap.  If I adjust the subroutine like this:

  sub AEObjDesc::DESTROY {
    print shift()->{DESC}->get;
    # AEDisposeDesc(shift()->{DESC});
  }

I get:

  'obj '()
  'obj '()
  obj (Ç00...64È)

It is this third one that is causing me the problems.  If I put a
sleep(5) at the end of the program, I get:

  'obj '()
  'obj '()
  'obj '()

and the heap is fine.  So my first question is, do I even need to dispose
of these descriptors?  It looks like there isn't much left to dispose.
If I don't need to dispose of them, then I have nothing to worry about.

If I do need to dispose of them, does anyone have ideas for a
workaround?

(FYI, until I get this worked out, the current Mac::Glue will not attempt
to dispose of these descriptors, which could result in memory leaks,
which is better than trashed heaps.  :-)

Thanks,

--
Chris Nandor          mailto:pudge@pobox.com         http://pudge.net/
%PGPKey = ('B76E72AD', [1024, '0824090B CE73CA10  1FF77F13 8180B6B6'])

***** Want to unsubscribe from this list?
***** Send mail with body "unsubscribe" to mac-perl-request@iis.ee.ethz.ch