Norbert Irmer wrote: > Yes, this solves the problem. > > I have encountered another problem. When i put fog into the inventory > of a generator, > the server crashes after some time. I suppose the reason is, that fog > itself is a > generator, which destroys itself after one generation (probably to > achieve the > random fog movement?) and it isn't expected that it is in the > inventory of > another object. But i am not sure. Is it possible to do a debug build ? > Perhaps with 'configure --with-debug' ? Ok, i just did export CFLAGS="-g" export LDFLAGS="-g" When doing a stack trace i get Program received signal SIGSEGV, Segmentation fault. 0x80a05d0 in get_map_from_coord (m=0x0, x=0xbfbff6b0, y=0xbfbff6b4) at map.c:1845 1845 if (*x>=0 && *x<MAP_WIDTH(m) && *y>=0 && *y < MAP_HEIGHT(m)) (gdb) info stack #0 0x80a05d0 in get_map_from_coord (m=0x0, x=0xbfbff6b0, y=0xbfbff6b4) at map.c:1845 #1 0x809da4d in blocked (m=0x0, x=0, y=-1) at map.c:315 #2 0x809dc6a in arch_blocked (at=0x8283400, m=0x0, x=0, y=-1) at map.c:438 #3 0x80a3539 in find_free_spot (at=0x8283400, m=0x0, x=0, y=0, start=1, stop=9) at object.c:1935 #4 0x8086b10 in generate_monster (gen=0x8bb2c44) at time.c:119 #5 0x8088ac2 in process_object (op=0x8bb2c44) at time.c:1186 #6 0x8066ba9 in process_events (map=0x0) at main.c:922 #7 0x806713d in main (argc=1, argv=0xbfbffc28) at main.c:1147 #8 0x8049d45 in _start () As mark wrote in a previous mail, the problem is caused by process_object processing the object in the inventory of the generator. But a top level check in process_object like if op->type==monster && op->map==NULL continue is no solution, as the fog example shows. I would propose to change 'find_free_spot' or even better 'arch_out_of_map', which is called by 'find_free_spot', so that false is returned if map==NULL.