Will it never end?
Can someone please tell me why I'm getting an out of range error thrown when checking position 35 of room_flags when the declaration for room_flags in room_index_data is bitset<MAX_ROOM_FLAGS - 1> room_flags; and MAX_ROOM_FLAGS, which is the last member of the enumerator holding room flags is number 36?
Here's the backtrace in gdb.
(gdb) bt
#0 0x00b97402 in __kernel_vsyscall ()
#1 0x002408a0 in raise (sig=6) at ../nptl/sysdeps/unix/sysv/linux/raise.c:64
#2 0x00242271 in abort () at abort.c:88
#3 0x00d60ba0 in __gnu_cxx::__verbose_terminate_handler () from /usr/lib/libstdc++.so.6
#4 0x00d5e685 in ?? () from /usr/lib/libstdc++.so.6
#5 0x00d5e6c2 in std::terminate () from /usr/lib/libstdc++.so.6
#6 0x00d5e7fa in __cxa_throw () from /usr/lib/libstdc++.so.6
#7 0x00cf507f in std::__throw_out_of_range () from /usr/lib/libstdc++.so.6
#8 0x080738e0 in std::bitset<35u>::test (this=0x8f4af90, __position=35) at /usr/lib/gcc/i386-redhat-linux/4.1.2/../../../../include/c++/4.1.2/bitset:1090
#9 0x080c1bf1 in fold_area (tarea=0x8f440d8, filename=0x8f44198 "limbo.are", install=false, backup=false) at build.c:1159
#10 0x080c2e7d in do_foldarea (ch=0x8face20, argument=0x820e6f6 ""

at build.c:3375
#11 0x08120ba8 in do_saveall (ch=0x8face20, argument=0x8201337 " "

at graddons.c:187
#12 0x080f0031 in do_copyover (ch=0x8face20, argument=0xbfda951e "now"

at comm.c:3819
#13 0x0813603b in interpret (ch=0x8face20, argument=0xbfda951e "now"

at interp.c:332
#14 0x080f41a2 in game_loop () at comm.c:850
#15 0x080f49f1 in main (argc=4, argv=0xbfdb9604) at comm.c:561
From what I can tell, there are 35 elements in that bitset, which is what I'd expect, according to what's shown for frame 8.
Edit:
Meh, just removed the - 1 from where room_flags is in room_index_data. Still only saves the right stuff so no extra 0's in the area file for room flags.