On Fri, 26 Mar 1999, Patrick Dughi wrote:
>#0 0x8058cab in perform_immort_where (ch=0x20202020,
> arg=0x20202020 <Address 0x20202020 out of bounds>)
> at act.informative.c:3010
0x20 = 32 = ' '
> Obviously its overwriting memory somewhere (as opposed to trying
>to do a string comparison or the like on a null string), but where, I
>cannot see. Aside from actually sitting down and debugging it for real,
>anyone seen this before, or have any ideas?
Here's something to try:
for (i = character_list; i; i = i->next)
if (CAN_SEE(ch, i) && i->in_room != NOWHERE && isname(arg, i->player.name)) {
found = 1;
- sprintf(buf, "M%3d. %-25s - [%5d] %s\r\n", ++num, GET_NAME(i),
- GET_ROOM_VNUM(IN_ROOM(i)), world[IN_ROOM(i)].name);
+ if (snprintf(buf, MAX_STRING_LENGTH, ...the above...) < 0)
+ log("Overflow: " (+ the above snprintf format));
send_to_char(buf, ch);
}
If that doesn't get it, try:
void print_object_location(int num, struct obj_data * obj,
struct char_data *ch, int recur)
{
int off = 0;
if (num > 0)
off += sprintf(buf, "O%3d. %-25s - ", num, obj->short_description);
else
off += sprintf(buf, "%33s", " - ");
if (obj->in_room > NOWHERE) {
if (snprintf(buf + off, MAX_STRING_LENGTH - off,
"[%5d] %s\r\n",
GET_ROOM_VNUM(IN_ROOM(obj)), world[obj->in_room].name) < 0)
log("Overflow: [%5d] %s", GET_ROOM_VNUM(IN_ROOM(obj)),
world[obj->in_room].name);
...rest as above...
--
George Greer | Stock Bug Reporting or Help
greerga@circlemud.org | http://bugs.circlemud.org/
+------------------------------------------------------------+
| Ensure that you have read the CircleMUD Mailing List FAQ: |
| http://qsilver.queensu.ca/~fletchra/Circle/list-faq.html |
+------------------------------------------------------------+
This archive was generated by hypermail 2b30 : 12/15/00 PST