fix memory leak for knight's starting pony
makemon() has a 1% chance to bestow a worn saddle when creating any rideable monster. If that chance kicked in on a knight's starting pony, an extra saddle would end up being created but not worn nor in inventory nor on floor so not be freed when the game ended. That 1% chance also overrode saddle suppression for pauper knights. There wouldn't be any extra saddle but their pony could start with one, against intent. Have makedog() (which is only used for starting pet) tell makemon() to suppress inventory when creating the initial pet.
This commit is contained in:
@@ -2088,6 +2088,9 @@ shop bug: buying a container with unpaid items in it could produce impossible
|
||||
"unpaid_cost: object not on any bill" warnings
|
||||
when walking into/against a locked closed door, 'autounlock'==kick didn't
|
||||
execute kick when player answered yes to "Door is locked. Kick it?"
|
||||
having a 1% chance of creating rideable monsters with worn saddle gave knights
|
||||
a 1% chance of creating an extra saddle for starting pony; it wasn't
|
||||
tracked with other objects so produced a trivial memory leak
|
||||
|
||||
|
||||
Fixes to 3.7.0-x Platform and/or Interface Problems Exposed Via git Repository
|
||||
|
||||
@@ -217,7 +217,12 @@ makedog(void)
|
||||
petname = "Sirius"; /* Orion's dog */
|
||||
}
|
||||
|
||||
mtmp = makemon(&mons[pettype], u.ux, u.uy, MM_EDOG);
|
||||
/* specifying NO_MINVENT prevents makemon() from having a 1% chance
|
||||
of creating a pony with an already worn saddle; dogs and cats
|
||||
aren't affected because they don't have any initial inventory
|
||||
[if anybody adds stranger pets that are expected to have such,
|
||||
they'll need to modify this] */
|
||||
mtmp = makemon(&mons[pettype], u.ux, u.uy, MM_EDOG | NO_MINVENT);
|
||||
|
||||
if (!mtmp)
|
||||
return ((struct monst *) 0); /* pets were genocided [how?] */
|
||||
@@ -225,7 +230,7 @@ makedog(void)
|
||||
if (!svc.context.startingpet_mid) {
|
||||
svc.context.startingpet_mid = mtmp->m_id;
|
||||
if (!u.uroleplay.pauper) {
|
||||
/* initial horses already wear saddle (unless hero is a pauper) */
|
||||
/* initial horses start wearing a saddle (pauper hero excluded) */
|
||||
if (pettype == PM_PONY
|
||||
&& (otmp = mksobj(SADDLE, TRUE, FALSE)) != 0) {
|
||||
/* pseudo initial inventory; saddle is not actually in hero's
|
||||
|
||||
Reference in New Issue
Block a user