diff options
author | kensmith <kensmith@FreeBSD.org> | 2007-12-29 04:56:07 +0000 |
---|---|---|
committer | kensmith <kensmith@FreeBSD.org> | 2007-12-29 04:56:07 +0000 |
commit | 7b1f74b3d24e99955f39ed3a5ab2f55035fcbc14 (patch) | |
tree | 20d53864f77ccb70612c29a07dc84e162975232d /usr.sbin/sysinstall/index.c | |
parent | 72d4e91a1bc291f8c774f5ec5a02b6437a67a12b (diff) | |
download | FreeBSD-src-7b1f74b3d24e99955f39ed3a5ab2f55035fcbc14.zip FreeBSD-src-7b1f74b3d24e99955f39ed3a5ab2f55035fcbc14.tar.gz |
Plug a memory leak. Once any given package (e.g. perl) was installed
we would leak a saved screen for every other package we tried to install
that listed perl as one of its dependencies. When installing things
like gnome and kde that wound up being a LOT of leaked memory.
Insta-MFC request coming so this can be tested as part of 6.3-RC2...
Testing help from: kris
Diffstat (limited to 'usr.sbin/sysinstall/index.c')
-rw-r--r-- | usr.sbin/sysinstall/index.c | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/usr.sbin/sysinstall/index.c b/usr.sbin/sysinstall/index.c index 7a9443a..a55b541 100644 --- a/usr.sbin/sysinstall/index.c +++ b/usr.sbin/sysinstall/index.c @@ -687,7 +687,7 @@ index_extract(Device *dev, PkgNodePtr top, PkgNodePtr who, Boolean depended) int status = DITEM_SUCCESS; PkgNodePtr tmp2; IndexEntryPtr id = who->data; - WINDOW *w = savescr(); + WINDOW *w; /* * Short-circuit the package dependency checks. We're already @@ -702,6 +702,7 @@ index_extract(Device *dev, PkgNodePtr top, PkgNodePtr who, Boolean depended) if (id->installed == 1) return DITEM_SUCCESS; + w = savescr(); if (id && id->deps && strlen(id->deps)) { char t[2048 * 8], *cp, *cp2; @@ -744,6 +745,7 @@ index_extract(Device *dev, PkgNodePtr top, PkgNodePtr who, Boolean depended) dev->volume, id->volume); DEVICE_INIT(mediaDevice); } else { + restorescr(w); return DITEM_FAILURE; } } |