after taking a good look at zedit.c, I guess it all comes down to the
following chunk of code:
/*. Make a new zone in memory.*/
CREATE(new_table, struct zone_data, top_of_zone_table);
new_table[top_of_zone_table + 1].number = 32000;
for(i = 0; i <= top_of_zone_table + 1; i++)
if(!found)
if (i > top_of_zone_table || zone_table[i].number > vzone_num)
{ found = 1;
new_table[i].name = str_dup("New Zone");
new_table[i].number = vzone_num;
new_table[i].top = (vzone_num * 100) + 99;
new_table[i].lifespan = 30;
new_table[i].age = 0;
new_table[i].reset_mode = 2;
CREATE(new_table[i].cmd, struct reset_com, 1);
new_table[i].cmd[0].command = 'S';
if (i <= top_of_zone_table)
new_table[i+1] = zone_table[i];
} else
new_table[i] = zone_table[i];
else
new_table[i+1] = zone_table[i];
free(zone_table);
zone_table = new_table;
top_of_zone_table++;
Question. Isn't the second line totally wrong? if you calloc an array of
top_of_zone_table size, and then you set an element in
new_table[top_of_zone_table + 1] (number) aren't you WAY past the end of
the new array that you allocated?
Not only that... but you are actually 2 spaces past it since you have to
consider that they array starts at [0].
So, is it me, or does this piece of code look totally fubared? I think its
time for me to re-write it. :)
Wayde
+------------------------------------------------------------+
| Ensure that you have read the CircleMUD Mailing List FAQ: |
| http://democracy.queensu.ca/~fletcher/Circle/list-faq.html |
+------------------------------------------------------------+
This archive was generated by hypermail 2b30 : 12/08/00 PST