Peter Ajamian wrote:
>
> When you define an array as int i[10] you actually end up with 10
> intergers ranging from i[0] to i[9], trying to access i[10] is undefined
> and will usually result in a seg fault or worse. same thig goes for
> top_of_world, if memory is allocated for top_of_world elements with
> malloc or CREATE those elements are indexed as [0] to [top_of_world
> -1]. trying to index the array with [top_of_world] is undefined and
> will usually result in a seg fault. See comments dispersed below...
Checking through the src code reveals that top_of_world is actually the
index of the top element, IE if there are 10 rooms it'll have the number
9. (see do_show and the stats part (line 2029 roughly (using bpl16 with
latest snapshot patch, nothing like being on the bleeding edge :) the
number of rooms is top_of_world+1) or firing up the game in a debugger
and checking the contents of world[top_of_world] should show something
valid. Unless there was a change of behaviour, I know that top_of_shops
was changed in bpl16 to match the other top_of_x things...
> Andrey Fidrya wrote:
> >
> > Is this a bug?
> > (act.wizard.c):
> > case 6:
> > strcpy(buf, "Death Traps\r\n-----------\r\n");
> > for (i = 0, j = 0; i <= top_of_world; i++)
>
> This is a bug ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
That's actually correct, ppl would have hit this a long time ago,
especially as ppl often use efence to link in with the game, to track
memory trashing :)
Chris
+------------------------------------------------------------+
| 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