On 1/22/98 10:09 PM, George (greerga@CIRCLEMUD.ORG) stated:
>(perhaps I should add a dt->character check...but at that point, you
>*should* have one.)
Actually, George, you do need one :-)
The case is from the following code, in Valid_Name:
        /*
         * Make sure someone isn't trying to create this same name.  We want to
         * do a 'str_cmp' so people can't do 'Bob' and 'BoB'.  This check is done
         * here because this will prevent multiple creations of the same name.
         * Note that the creating login will not have a character name yet. -gg
         */
        for (dt = descriptor_list; dt; dt = dt->next)
                if (GET_NAME(dt->character) && !str_cmp(GET_NAME(dt->character),
newname))
                        return (STATE(dt) == CON_PLAYING);
Note: it runs through all the descriptors int he list, expecting a valid
dt->character.
The correct code:
        for (dt = descriptor_list; dt; dt = dt->next)
                if (dt->character && GET_NAME(dt->character) &&
!str_cmp(GET_NAME(dt->character), newname))
                        return (STATE(dt) == CON_PLAYING);
The crashes occur when someone creates a new character, and someone else
is also at login with no name entered, or is at a pre-login state (color
patch).
- Chris Jacobson
     +------------------------------------------------------------+
     | 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