really free dead monsters */
| 2484 | |
| 2485 | /* really free dead monsters */ |
| 2486 | void |
| 2487 | dmonsfree(void) |
| 2488 | { |
| 2489 | struct monst **mtmp, *freetmp; |
| 2490 | int count = 0; |
| 2491 | char buf[QBUFSZ]; |
| 2492 | |
| 2493 | buf[0] = '\0'; |
| 2494 | for (mtmp = &fmon; *mtmp; ) { |
| 2495 | freetmp = *mtmp; |
| 2496 | if (DEADMONSTER(freetmp) && !freetmp->isgd) { |
| 2497 | *mtmp = freetmp->nmon; |
| 2498 | freetmp->nmon = NULL; |
| 2499 | dealloc_monst(freetmp); |
| 2500 | count++; |
| 2501 | } else |
| 2502 | mtmp = &(freetmp->nmon); |
| 2503 | } |
| 2504 | |
| 2505 | if (count != iflags.purge_monsters) { |
| 2506 | describe_level(buf, 2); |
| 2507 | impossible("dmonsfree: %d removed doesn't match %d pending on %s", |
| 2508 | count, iflags.purge_monsters, buf); |
| 2509 | } |
| 2510 | iflags.purge_monsters = 0; |
| 2511 | } |
| 2512 | |
| 2513 | /* called when monster is moved to larger structure */ |
| 2514 | void |
no test coverage detected