Contrary to popular belief. sprintf does not allocate memory for variables. char's are arrays, each spot holds a letter, the last spot of the array is marked with \0. So char spell_buf; is an array with 1 spot. Your trying to strap a spell into it. You can either malloc it, or just change "char spell_buf;" to "char spell_buf[MSL];

Davion


From: Cyhawk <[EMAIL PROTECTED]>
To: [email protected]
Subject: Confusing bug
Date: Sat, 20 Dec 2003 18:57:17 -0800

Hey all, maybe someone can help me with this, this is part of my random item gen, pills specificly..

Anywho, its crashing with (cygwin)
Program received signal SIGSEGV, Segmentation fault.
0x610b7841 in memmove () from /usr/bin/cygwin1.dll

and (in linux)

Program received signal SIGSEGV, Segmentation fault.
0x400beabc in _IO_str_overflow () from /lib/i686/libc.so.6

I am confused.. ive never seen this before..

As far as i can tell, i dont know whats causing this. While writing this email ;) i remembered somewhere else i saw something im trying to achive, so i changed the
sprintf for the short descr to
        sprintf (prefix_full, "a small pill of %s", 
skill_table[spell_num].name);
and it causes the same problems.

Any help would be appreciated.. (oye im bad at this ;)

-Thri

Code snip below




OBJ_DATA *
thri_rand_item_pill (OBJ_DATA * obj, int level)
{
  char prefix_full[MSL];
  int spell_num;
  char spell_buf;
  int find_spell = number_range(1, 2);

        switch (find_spell)
        {
                case 1:
                spell_num = skill_lookup ("detect invis");
                sprintf( spell_buf, "detect invis");
                break;
                case 2:
                spell_num = skill_lookup ("detect hidden");
                sprintf( spell_buf, "detect hidden");
                break;
        }
        obj = create_object (get_obj_index (30230), 0);
        obj->value[0] = level / 2;
        obj->value[1] = spell_num;

        sprintf (prefix_full, "a small pill of %s", spell_buf);
        obj->short_descr = str_dup (prefix_full);
        return(obj);
}


--
ROM mailing list
[email protected]
http://www.rom.org/cgi-bin/mailman/listinfo/rom

_________________________________________________________________
The new MSN 8: smart spam protection and 2 months FREE* http://join.msn.com/?page=features/junkmail http://join.msn.com/?page=dept/bcomm&pgmarket=en-ca&RU=http%3a%2f%2fjoin.msn.com%2f%3fpage%3dmisc%2fspecialoffers%26pgmarket%3den-ca


Reply via email to