]> err.no Git - dpkg/commitdiff
Don't call nffreeall, in any of the c/c++ programs. It appears dselect
authorAdam Heath <doogie@debian.org>
Sun, 1 Sep 2002 04:47:03 +0000 (04:47 +0000)
committerAdam Heath <doogie@debian.org>
Sun, 1 Sep 2002 04:47:03 +0000 (04:47 +0000)
slightly corrupts it's memory enough that it can't be freed without
segfaulting.

ChangeLog
debian/changelog
dpkg-deb/main.c
dselect/main.cc
include/dpkg.h.in
lib/startup.c
main/main.c
main/query.c
split/main.c

index 2ba386db4fcdd876f739d11aad04d940be52573b..4af9ce1fa0ae2b041f0aed694085a77c4303efbd 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+Sat Aug 31 23:46:04 CDT 2002 Adam Heath <doogie@debian.org>
+
+  * dpkg-deb/main.c, dselect/main.cc, include/dpkg.h.in, lib/startup.c
+    main/main.c, main/query.c, split/main.c:  Don't call nffreeall, in any
+    of the c/c++ programs.  It appears dselect slightly corrupts it's
+    memory enough that it can't be freed without segfaulting.
+
 Sat Aug 31 23:42:08 CDT 2002 Adam Heath <doogie@debian.org>
 
   * version-nr, debian/changelog: Modified for version 1.10.6.
index 16069e8c43bb36f698b4ccf7cf3769e36fb728fb..ea842d8b366831f041a1ddc8f81e5049f1269450 100644 (file)
@@ -1,5 +1,9 @@
 dpkg (1.10.6) unstable; urgency=low
 
+  * Don't call nffreeall, in any of the c/c++ programs.  It appears dselect
+    slightly corrupts it's memory enough that it can't be freed without
+    segfaulting.  Closes: #159023.
+
  -- Adam Heath <doogie@debian.org>  UNRELEASED
 
 dpkg (1.10.5) unstable; urgency=low
index 54b10618d89973395a04678cc707f191f9f72fc6..dad11cb985449d9ac3a5a786ab7f9791c81c08df 100644 (file)
@@ -170,7 +170,7 @@ int main(int argc, const char *const *argv) {
 
   unsetenv("GZIP");
   action(argv);
-  standard_shutdown();
+  standard_shutdown(0);
   exit(0);
 }
 
index 831bfef91d434928fceea80623b844dfeda99eca..4dfc329ae95e2d16c16ba6b613ef82b40fbf646e 100644 (file)
@@ -494,7 +494,7 @@ int main(int, const char *const *argv) {
   }
 
   cursesoff();
-  standard_shutdown();
+  standard_shutdown(0);
   return(0);
 }
 
index 06c4074deb0fd954d8f7a2246f5e732bacb922be..f43d04c6db9aaf1f9dff0f4a855db37f911820fd 100644 (file)
@@ -168,7 +168,7 @@ extern const char printforhelp[];
 /*** from startup.c ***/
 
 void standard_startup(jmp_buf *ejbuf, int argc, const char *const **argv, const char *prog, int loadcfg, const struct cmdinfo cmdinfos[]);
-void standard_shutdown(void);
+void standard_shutdown(int freemem);
 
 /*** from ehandle.c ***/
 
index a669af545d786da4ff2ed9f5163578e007927ecc..1458ca3df11955275d24b0aedff3ad9404fea2af 100644 (file)
@@ -57,8 +57,9 @@ void standard_startup(jmp_buf *ejbuf, int argc, const char *const **argv, const
   myopt(argv,cmdinfos);
 }
 
-void standard_shutdown(void) {
+void standard_shutdown(int freemem) {
   set_error_display(0,0);
   error_unwind(ehflag_normaltidy);
-  nffreeall();
+  if (freemem)
+    nffreeall();
 }
index 8e8ef1225e1c5492d165e29b99b1c2f53f611974..a58154c64783f058688883e1d65d97f38cafb97f 100644 (file)
@@ -558,7 +558,7 @@ int main(int argc, const char *const *argv) {
 
   actionfunction(argv);
 
-  standard_shutdown();
+  standard_shutdown(0);
 
   return reportbroken_retexitstatus();
 }
index 2ff4a57d395d94d3a4f5807231bafe79f94f8dcf..c3f69a1e19f6019ee18a5ceed524e4fca6685aa8 100644 (file)
@@ -547,7 +547,7 @@ int main(int argc, const char *const *argv) {
 
   actionfunction(argv);
 
-  standard_shutdown();
+  standard_shutdown(0);
 
   return reportbroken_retexitstatus();
 }
index 0f9d77b0ef51811b87fb47add27d9e8b7afb6606..4ab3c956ad75dcd9a0356dea80534127bdea0481 100644 (file)
@@ -169,6 +169,6 @@ int main(int argc, const char *const *argv) {
 
   if (ferror(stderr)) werr("stderr");
   
-  standard_shutdown();
+  standard_shutdown(0);
   exit(0);
 }