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...
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 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
> if (ROOM_FLAGGED(i, ROOM_DEATH))
> [...]
> case 7:
> strcpy(buf, "Godrooms\r\n--------------------------\r\n");
> for (i = 0, j = 0; i < top_of_world; i++)
This is not ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ should be <=?
>
> There's another one in spec_assign.c:
> void assign_rooms(void)
> {
> int i;
>
> ASSIGNROOM(3030, dump);
> ASSIGNROOM(3031, pet_shops);
>
> if (dts_are_dumps)
> for (i = 0; i < top_of_world; i++)
This is not ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
> if (ROOM_FLAGGED(i, ROOM_DEATH))
> world[i].func = dump;
> }
>
> Andrey
+------------------------------------------------------------+
| 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