[comp.sys.mac.programmer] DAHandler and memory management

ranson@crcge1.UUCP (D. Ranson CNET) (04/07/88)

A friend of mine is a DA developper, and is experiencing many difficulties
with DAs under Multifinder, running in the DAHandler partition. The problems
seem related to memory management:
 - Cut and paste of large clipboards (4K on a 1M Mac+) is impossible.
 - NewPtr and NewHandle do not always return nil when the memory is not
available (!).

The same DAs have been tested running in the partition of a simple DA shell
application (by opening the DA with the option key down). In this setup, all
memory related problems disappear.

   Is this a bug in the DAHandler?

       Daniel Ranson
       ...!mcvax!inria!crcge1!ranson

raylau@dasys1.UUCP (Raymond Lau) (04/11/88)

In article <3378@crcge1.UUCP>, ranson@crcge1.UUCP (D. Ranson CNET) writes:
> 
> A friend of mine is a DA developper, and is experiencing many difficulties
> with DAs under Multifinder, running in the DAHandler partition. The problems
> seem related to memory management:
>  - Cut and paste of large clipboards (4K on a 1M Mac+) is impossible.
>  - NewPtr and NewHandle do not always return nil when the memory is not
> available (!).
> 
> The same DAs have been tested running in the partition of a simple DA shell
> application (by opening the DA with the option key down). In this setup, all
> memory related problems disappear.
> 
>    Is this a bug in the DAHandler?
> 
>        Daniel Ranson
>        ...!mcvax!inria!crcge1!ranson

I don't know the answer to your question per se....but an idea to relate.

Recently, while implementing UnStuffIt DA, I needed around 160k in a few
large structures.  (And about 5k in a small one.)

For the large one I stuck to using the MF Temporary Memory allocation
routines.  (WHICH, I might add, are not included in LSC 2.15 glue!)
Only allows for non-relocatable blocks...but...if you need, lock them
in place and dereference them.  (Of course, when through, get rid of them.)

When temp mem. allocation isn't available, I stuck w/NewPtr...  (The DA was
designed to be transient in nature, so I didn't bother w/a relocatable
block.)

For the 5k structure, a simple NewPtr...  Under MF, if not enough memory,
I get the appropriate error msg. from the allocation routines.  (I haven't
been able to generate a case where the NewPtr of 5k fails for sure and
the rest succeeds, so I don't know...  I'd check MemError instead of
checking for NIL--actually, that's what I do do.)




Now.....where's LSC 3.0.....  What's the price for upgrading.....  So
many questions, so little time.

-Ray
(raylau@dasys1.UUCP)