At 07:52 AM 8/7/98 -0400, you wrote:
>> >At the very end of this function, is there any reason not to do a ch=NULL;
>> >right have the free(ch); call? I think this might be a nice way to ensure
>> >consistancy. But for that DT and fast aggr problem, you need to check to
>> >see if(ch && ch->in_room)
>
>since everyone explained why it wouldn't work, but didn't provide a
>solution, here's one..just make a macro like:
>
>#define FREE(var) do { \
> free(var); \
> var = NULL; \
> } while (0)
>
>and replace all free() calls with FREE()..
What kind of drugs are you on? If the parameter being passed into the FREE()
macro is STILL a local variable, then the effect of nulling it out is STILL
zero.
It doesn't matter if it's done as a macro or code you typed in.
On a side note, why would you ever want to enclose code within a "do { }
while (0);"
block? If you've a legitimate need for a sub-block of code, such as to
introduce
some very temporary local variables, just use your braces and forget the
do/while.
+------------------------------------------------------------+
| Ensure that you have read the CircleMUD Mailing List FAQ: |
| http://democracy.queensu.ca/~fletcher/Circle/list-faq.html |
+------------------------------------------------------------+
This archive was generated by hypermail 2b30 : 12/15/00 PST