summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Kalnischkies <david@kalnischkies.de>2016-06-08 22:40:53 +0200
committerDavid Kalnischkies <david@kalnischkies.de>2016-06-08 22:40:53 +0200
commitc92ece1a7309d762bcf424f4ab0f1427d520d207 (patch)
tree8f7f7440dabe326c40d3b743fad17a0624025cdd
parentb4450f1dd6bca537e60406b2383ab154a3e1485f (diff)
downloadapt-c92ece1a7309d762bcf424f4ab0f1427d520d207.tar.gz
drop Dpkg::MaxArgs in favor of Dpkg::MaxArgsBytes
We had an old FIXME saying that it is probably pointless to do this if we limit by length of the commandline already and I completely agree. The splitting is bad enough if it must be done, so we should only do it if we have to (as in absolute length of commandline) and, but that is just a remark, it is unlikely that we ever have/had a call triggering this as the default value was ~32000 items…
-rw-r--r--apt-pkg/deb/dpkgpm.cc32
1 files changed, 5 insertions, 27 deletions
diff --git a/apt-pkg/deb/dpkgpm.cc b/apt-pkg/deb/dpkgpm.cc
index 4591049a9..f8855526c 100644
--- a/apt-pkg/deb/dpkgpm.cc
+++ b/apt-pkg/deb/dpkgpm.cc
@@ -1231,9 +1231,6 @@ bool pkgDPkgPM::Go(APT::Progress::PackageManager *progress)
fd_set rfds;
struct timespec tv;
- // FIXME: do we really need this limit when we have MaxArgBytes?
- unsigned int const MaxArgs = _config->FindI("Dpkg::MaxArgs",32*1024);
-
// try to figure out the max environment size
int OSArgMax = sysconf(_SC_ARG_MAX);
if(OSArgMax < 0)
@@ -1305,33 +1302,14 @@ bool pkgDPkgPM::Go(APT::Progress::PackageManager *progress)
for (; J != List.end() && J->Op == I->Op; ++J)
/* nothing */;
- // keep track of allocated strings for multiarch package names
- std::vector<char *> Packages;
+ auto const size = (J - I) + 10;
// start with the baseset of arguments
- unsigned long Size = StartSize;
+ auto Size = StartSize;
Args.erase(Args.begin() + BaseArgs, Args.end());
-
- // Now check if we are within the MaxArgs limit
- //
- // this code below is problematic, because it may happen that
- // the argument list is split in a way that A depends on B
- // and they are in the same "--configure A B" run
- // - with the split they may now be configured in different
- // runs, using Immediate-Configure-All can help prevent this.
- if (J - I > (signed)MaxArgs)
- {
- J = I + MaxArgs;
- unsigned long const size = MaxArgs + 10;
- Args.reserve(size);
- Packages.reserve(size);
- }
- else
- {
- unsigned long const size = (J - I) + 10;
- Args.reserve(size);
- Packages.reserve(size);
- }
+ Args.reserve(size);
+ // keep track of allocated strings for multiarch package names
+ std::vector<char *> Packages(size, nullptr);
int fd[2];
if (pipe(fd) != 0)