]> git.saurik.com Git - apt.git/blobdiff - apt-pkg/deb/dpkgpm.cc
* apt-pkg/deb/dpkgpm.cc:
[apt.git] / apt-pkg / deb / dpkgpm.cc
index 2b167dbf6f31c79765135f2d416f27843b40d4cb..4c44cd01a2ad062b06c545688434c3cb18efd0d1 100644 (file)
@@ -624,15 +624,20 @@ bool pkgDPkgPM::Go(int OutStatusFd)
            
         */
         char* list[5];
-        if(!TokSplitString(':', line, list, sizeof(list)/sizeof(list[0])))
-           // FIXME: dpkg sends multiline error messages sometimes (see
-           //        #374195 for a example. we should support this by
-           //        either patching dpkg to not send multiline over the
-           //        statusfd or by rewriting the code here to deal with
-           //        it. for now we just ignore it and not crash
-           continue;
+        //        dpkg sends multiline error messages sometimes (see
+        //        #374195 for a example. we should support this by
+        //        either patching dpkg to not send multiline over the
+        //        statusfd or by rewriting the code here to deal with
+        //        it. for now we just ignore it and not crash
+        TokSplitString(':', line, list, sizeof(list)/sizeof(list[0]));
         char *pkg = list[1];
         char *action = _strstrip(list[2]);
+        if( pkg == NULL || action == NULL) 
+        {
+           if (_config->FindB("Debug::pkgDPkgProgressReporting",false) == true)
+              std::clog << "ignoring line: not enough ':'" << std::endl;
+           continue;
+        }
 
         if(strncmp(action,"error",strlen("error")) == 0)
         {