>Minor oversight, change the code below PLR_DELETED to look like this: > > /* We get false positive from the original deleted name. */ > free_char(d->character); > CREATE(d->character, struct char_data, 1); > /* Check for multiple creations... */ > >Basically moving the free_char() and CREATE() lines up. Prevents a minor >memory leak with the old character's strings if the person puts in an >invalid name when overwriting a deleted character. Rare, but still >leaking. I've confirmed it still works when overwriting a deleted person. Ok, question for you on this....what about these 2 lines? free(GET_NAME(d->character)); GET_NAME(d->character) = NULL; Are they moved or removed? This is what I had when I moved the 2 lines above as said.... if (PLR_FLAGGED(d->character, PLR_DELETED)) { /* We get false positive from the original deleted name. */ free_char(d->character); CREATE(d->character, struct char_data, 1); free(REAL_NAME(d->character)); REAL_NAME(d->character) = NULL; /* Check for multiple creations... */ if (!Valid_Name(tmp_name)) { SEND_TO_Q("Invalid name, please try another.\r\nName: ", d); return; } clear_char(d->character); CREATE(d->character->player_specials, struct player_special_data, 1); +------------------------------------------------------------+ | 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