Browse Source

* make sure that the pkgRecords D'tor does not segfault

debian/1.8.y
Michael Vogt 17 years ago
parent
commit
14cd494a9f
  1. 5
      apt-pkg/pkgrecords.cc
  2. 1
      apt-pkg/pkgrecords.h
  3. 2
      cmdline/apt-get.cc

5
apt-pkg/pkgrecords.cc

@ -42,6 +42,9 @@ pkgRecords::pkgRecords(pkgCache &Cache) : Cache(Cache), Files(0)
if (Files[I->ID] == 0)
return;
}
// We store that to make sure that the destructor won't segfault,
// even if the Cache object was destructed before this instance.
PackageFileCount = Cache.HeaderP->PackageFileCount;
}
/*}}}*/
// Records::~pkgRecords - Destructor /*{{{*/
@ -49,7 +52,7 @@ pkgRecords::pkgRecords(pkgCache &Cache) : Cache(Cache), Files(0)
/* */
pkgRecords::~pkgRecords()
{
for (unsigned I = 0; I != Cache.HeaderP->PackageFileCount; I++)
for (unsigned I = 0; I != PackageFileCount; I++)
delete Files[I];
delete [] Files;
}

1
apt-pkg/pkgrecords.h

@ -33,6 +33,7 @@ class pkgRecords
pkgCache &Cache;
Parser **Files;
int PackageFileCount;
public:

2
cmdline/apt-get.cc

@ -2013,7 +2013,7 @@ bool DoSource(CommandLine &CmdL)
if (system(S) != 0)
{
fprintf(stderr,_("Unpack command '%s' failed.\n"),S);
fprintf(stderr,_("Check if the 'dpkg-dev' package is installed.\n");
fprintf(stderr,_("Check if the 'dpkg-dev' package is installed.\n"));
_exit(1);
}
}

Loading…
Cancel
Save