diff options
-rw-r--r-- | apt-pkg/contrib/mmap.cc | 12 | ||||
-rw-r--r-- | debian/changelog | 2 |
2 files changed, 13 insertions, 1 deletions
diff --git a/apt-pkg/contrib/mmap.cc b/apt-pkg/contrib/mmap.cc index f0ab49265..aaa9da44f 100644 --- a/apt-pkg/contrib/mmap.cc +++ b/apt-pkg/contrib/mmap.cc @@ -216,7 +216,17 @@ DynamicMMap::DynamicMMap(FileFd &F,unsigned long Flags,unsigned long const &Work { if (_error->PendingError() == true) return; - + + // disable Moveable if we don't grow + if (Grow == 0) + this->Flags &= ~Moveable; + +#ifndef __linux__ + // kfreebsd doesn't have mremap, so we use the fallback + if ((this->Flags & Moveable) == Moveable) + this->Flags |= Fallback; +#endif + unsigned long long EndOfFile = Fd->Size(); if (EndOfFile > WorkSpace) WorkSpace = EndOfFile; diff --git a/debian/changelog b/debian/changelog index ea15159c8..25f658fe3 100644 --- a/debian/changelog +++ b/debian/changelog @@ -14,6 +14,8 @@ apt (0.9.7.3) UNRELEASED; urgency=low - do not segfault if nothing can be configured to statisfy a pre-depends (e.g. in a pre-depends loop) (Closes: #681958) * apt-pkg/contrib/mmap.cc: + - trigger the usage of the fallback code for kfreebsd also in the + second (filebased) constructor of DynamicMMap (Closes: #677704) - refer to APT::Cache-Start in case the growing failed as if -Limit is really the offender it will be noted in a previous error message. |