]> git.saurik.com Git - apt.git/commitdiff
outsmart gcc -O3 over-optimization in pkgCdrom::FindPackages
authorDavid Kalnischkies <david@kalnischkies.de>
Fri, 27 Nov 2015 21:22:21 +0000 (22:22 +0100)
committerDavid Kalnischkies <david@kalnischkies.de>
Fri, 27 Nov 2015 21:22:21 +0000 (22:22 +0100)
Seems like a simpler workaround than forcing a lower optimization
level just for this for all of apt.

See also:
https://bugs.launchpad.net/ubuntu/+source/gcc-5/+bug/1473674

apt-pkg/cdrom.cc
test/libapt/cdromfindpackages_test.cc

index 29eeca066a21e0120df49660a713efbb7a9d2421..5613459e73a657d9b63e8609c302be08b0933be4 100644 (file)
@@ -61,10 +61,10 @@ bool pkgCdrom::FindPackages(string CD,
       return _error->Errno("chdir","Unable to change to %s",CD.c_str());
 
    // Look for a .disk subdirectory
       return _error->Errno("chdir","Unable to change to %s",CD.c_str());
 
    // Look for a .disk subdirectory
-   if (DirectoryExists(".disk") == true)
+   if (InfoDir.empty() == true)
    {
    {
-      if (InfoDir.empty() == true)
-        InfoDir = CD + ".disk/";
+      if (DirectoryExists(".disk") == true)
+        InfoDir = InfoDir + CD + ".disk/";
    }
 
    // Don't look into directories that have been marked to ingore.
    }
 
    // Don't look into directories that have been marked to ingore.
index 6121d32b6c7fe6690b251c339841ef7b467c7119..0d8eb1f90eb6344632973a407618e7ba2e339d44 100644 (file)
@@ -24,7 +24,9 @@ class Cdrom : public pkgCdrom {
            std::string &InfoDir) {
         std::string const startdir = SafeGetCWD();
         EXPECT_FALSE(startdir.empty());
            std::string &InfoDir) {
         std::string const startdir = SafeGetCWD();
         EXPECT_FALSE(startdir.empty());
+        EXPECT_TRUE(InfoDir.empty());
         bool const result = pkgCdrom::FindPackages(CD, List, SList, SigList, TransList, InfoDir, NULL, 0);
         bool const result = pkgCdrom::FindPackages(CD, List, SList, SigList, TransList, InfoDir, NULL, 0);
+        EXPECT_FALSE(InfoDir.empty());
         std::sort(List.begin(), List.end());
         std::sort(SList.begin(), SList.end());
         std::sort(SigList.begin(), SigList.end());
         std::sort(List.begin(), List.end());
         std::sort(SList.begin(), SList.end());
         std::sort(SigList.begin(), SigList.end());