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