I have been running the game in Ubuntu 14.04 LTS under Valgrind for several days and When a mobile is killed with no equipment on them, i get this in Valgrind. I have played around trying use memmove to get around this but i get the same result. I can add more detail but its identical to 3.68
==2103== Source and destination overlap in strcpy(0xffefff240, 0xffefff244)
==2103== at 0x4C2E272: strcpy (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==2103== by 0x4C8D1F: strcpy (string3.h:104)
==2103== by 0x4C8D1F: find_all_dots (handler.c:1901)
==2103== by 0x42177B: get_from_container (act.item.c:450)
==2103== by 0x4242B8: do_get (act.item.c:587)
==2103== by 0x4B2D20: raw_kill (fight.c:551)
==2103== by 0x4B6247: damage (fight.c:1511)
==2103== by 0x4B4980: hit (fight.c:1771)
==2103== by 0x4B4F2F: perform_violence (fight.c:1076)
==2103== by 0x47C3A4: heartbeat (comm.c:1061)
==2103== by 0x481BD1: game_loop (comm.c:984)
==2103== by 0x40383E: init_game (comm.c:571)
==2103== by 0x40383E: main (comm.c:387)
==2103==
Code:
void get_from_container(struct char_data *ch, struct obj_data *cont,
char *arg, int mode, int howmany)
{
struct obj_data *obj, *next_obj;
int obj_dotmode, found = 0;
obj_dotmode = find_all_dots(arg); - > 450
Code:
int find_all_dots(char *arg) -> 1901
{
if (!strcmp(arg, "all"))
return (FIND_ALL);
else if (!strncmp(arg, "all.", 4)) {
strcpy(arg, arg + 4); /* strcpy: OK (always less) */ -->ISSUE
return (FIND_ALLDOT);
} else
return (FIND_INDIV);
}