X-Git-Url: https://git.saurik.com/apt.git/blobdiff_plain/90f057fdded3af992d2937f2b7b9a6a97447d0f1..97af521f92fb46dc95ab8ca2384d1041f7625ef5:/apt-pkg/sourcelist.cc diff --git a/apt-pkg/sourcelist.cc b/apt-pkg/sourcelist.cc index cb1287623..12db63079 100644 --- a/apt-pkg/sourcelist.cc +++ b/apt-pkg/sourcelist.cc @@ -1,6 +1,6 @@ // -*- mode: cpp; mode: fold -*- // Description /*{{{*/ -// $Id: sourcelist.cc,v 1.22 2002/03/26 07:38:58 jgg Exp $ +// $Id: sourcelist.cc,v 1.24 2002/07/08 04:18:07 jgg Exp $ /* ###################################################################### List of Sources @@ -128,6 +128,18 @@ pkgSourceList::pkgSourceList(string File) Read(File); } /*}}}*/ +// SourceList::~pkgSourceList - Destructor /*{{{*/ +// --------------------------------------------------------------------- +/* */ +pkgSourceList::~pkgSourceList() +{ + for (const_iterator I = SrcList.begin(); I != SrcList.end(); I++) + delete *I; + for (vector::const_iterator I = VendorList.begin(); + I != VendorList.end(); I++) + delete *I; +} + /*}}}*/ // SourceList::ReadVendors - Read list of known package vendors /*{{{*/ // --------------------------------------------------------------------- /* This also scans a directory of vendor files similar to apt.conf.d @@ -147,6 +159,11 @@ bool pkgSourceList::ReadVendors() if (ReadConfigFile(Cnf,CnfFile,true) == false) return false; + for (vector::const_iterator I = VendorList.begin(); + I != VendorList.end(); I++) + delete *I; + VendorList.erase(VendorList.begin(),VendorList.end()); + // Process 'simple-key' type sections const Configuration::Item *Top = Cnf.Tree("simple-key"); for (Top = (Top == 0?0:Top->Child); Top != 0; Top = Top->Next) @@ -217,6 +234,8 @@ bool pkgSourceList::Read(string File) if (!F != 0) return _error->Errno("ifstream::ifstream",_("Opening %s"),File.c_str()); + for (const_iterator I = SrcList.begin(); I != SrcList.end(); I++) + delete *I; SrcList.erase(SrcList.begin(),SrcList.end()); char Buffer[300]; @@ -226,7 +245,10 @@ bool pkgSourceList::Read(string File) F.getline(Buffer,sizeof(Buffer)); CurLine++; _strtabexpand(Buffer,sizeof(Buffer)); - + if (F.fail() && !F.eof()) + return _error->Error(_("Line %u too long in source list %s."), + CurLine,File.c_str()); + char *I; for (I = Buffer; *I != 0 && *I != '#'; I++);