Sometimes the "ed = ed_next" and "ed_next = ed->next" has been known to give
me a few headaches.

Try this method instead.

for ( ed = pObj->extra_descr; ed; ed = ed->next )
{
    send_to_char( "Freeing Extra Desc '%s'.\n\r", ed->keyword );
    free_extra_descr( ed );
}

----- Original Message ----- 
From: "Hiddukel" <[EMAIL PROTECTED]>
To: <[email protected]>
Sent: Thursday, January 22, 2004 10:45 PM
Subject: RE: Clearing extra descriptions


> I also have this in my code but it only deletes one extra description at a
> time.  I need a clear command to remove all the extra descriptions.
>
> -----Original Message-----
> From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of Valnir
> Sent: Thursday, January 22, 2004 7:22 PM
> To: [email protected]
> Subject: Re: Clearing extra descriptions
>
> Don't know if this will help, but here is how ours is done (using "delete"
> instead of clear)
>
>     if ( !str_cmp( command, "delete" ) )
>     {
>         EXTRA_DESCR_DATA *ped = NULL;
>
>         if ( keyword[0] == '\0' )
>         {
>             send_to_char( "Syntax:  ed delete [keyword]\n\r", ch );
>             return FALSE;
>         }
>
>         for ( ed = pObj->extra_descr; ed; ed = ed->next )
>         {
>             if ( is_name( keyword, ed->keyword ) )
>                 break;
>             ped = ed;
>         }
>
>         if ( !ed )
>         {
>             send_to_char( "OEdit:  Extra description keyword not
> found.\n\r", ch );
>             return FALSE;
>         }
>
>         if ( !ped )
>             pObj->extra_descr = ed->next;
>         else
>             ped->next = ed->next;
>
>         free_extra_descr( ed );
>
>         send_to_char( "Extra description deleted.\n\r", ch );
>         return TRUE;
>     }
>
> - Valnir
> ----- Original Message ----- 
> From: "Hiddukel" <[EMAIL PROTECTED]>
> To: <[email protected]>
> Sent: Thursday, January 22, 2004 7:16 PM
> Subject: Clearing extra descriptions
>
>
> I am seriously confused on this. What I am trying to do is clear all of
the
> extra descriptions from an object. I can add any number of extra
> descriptions to an object but when I try to clear them using this code it
> always leaves the first one. I have seen this exact same method used in
olc
> delete functions and I can't for the life of me figure out why it leaves
the
> first one in the list. Btw, I also get output saying that it is clearing
> the first extra description even though it remains after the clear.
>
> Here is the code in question:
> if (!str_cmp(command, "clear"))
> {
> EXTRA_DESCR_DATA *ed_next = NULL;
>
> for (ed = pObj->extra_descr; ed; ed = ed_next)
> {
> ed_next = ed->next;
> ptc(ch, "Clearing exra description: %s\n\r", ed->keyword);
> free_extra_descr(ed);
> }
>
> return TRUE;
> }
>
> I will also post the free_extra_descr function even though I believe it is
> stock.
>
> void free_extra_descr(EXTRA_DESCR_DATA * ed)
> {
> if (!IS_VALID(ed))
> return;
>
> free_string(ed->keyword);
> free_string(ed->description);
> INVALIDATE(ed);
>
> ed->next = extra_descr_free;
> extra_descr_free = ed;
> }
>
> If I am not mistaken clearing affects from objects would be done in a
> similar way also, if I am mistaken about that then I would like to know
how
> that is done as well. I appreciate any and all help on this
>
>
>
> -- 
> ROM mailing list
> [email protected]
> http://www.rom.org/cgi-bin/mailman/listinfo/rom
>


Reply via email to