Re: [code] FREE !!!

From: Mym the Incarnation of War (mym@cow.pasture.com)
Date: 12/18/96


> 
> ACMD(do_whois)
> {
>   struct char_data *victim = 0;
>   struct char_file_u tmp_store;
> 
>   skip_spaces(&argument);
> 
>   if (!*argument) {
>     send_to_char("\\c07USAGE: whois \\c04<name of a player to get info
> on>\\c00\r\n", ch);
>   }
>   else {
>     CREATE(victim, struct char_data, 1);
>     clear_char(victim);
>     if (load_char(argument, &tmp_store) > -1) {
>       store_to_char(&tmp_store, victim);
>       sprintf(buf, "%s\\c07Level \\c04%d %s\\c07.\\c00\r\n", buf,
> GET_LEVEL(victim),
>               class_abbrevs[(int) GET_CLASS(victim)]);
>       send_to_char(buf, ch);
>     }
>     else {
>       send_to_char("There is no such player.\r\n", ch);
>     }
>   }
> free(victim);
> }
> 

  The problem is that you don't blank buf before you use it, so it still
has the info in it from before.  Buf is a global variable, so it doesn't
go away after the function, therefore the info stays in it until something
clears it.  From what I can tell, you can change your sprintf line to this:

sprintf(buf, "\\c07Level \\c04%d %s\\c07.\\c00\r\n, GET_LEVEL(victim),
        class_abbrevs[(int) GET_CLASS(victim)]);

-- 
--Mym, the Incarnation of War
--Mists of Chaos
--Running on: 
    Cow.pasture.com 4000

                   -------------------------------------
                   | Everybody believes in something.  |
                   | I believe I'll have another beer. |
                   -------------------------------------
+-----------------------------------------------------------+
| Ensure that you have read the CircleMUD Mailing List FAQ: |
|   http://cspo.queensu.ca/~fletcher/Circle/list_faq.html   |
+-----------------------------------------------------------+



This archive was generated by hypermail 2b30 : 12/18/00 PST