summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorShawn O. Pearce <spearce@spearce.org>2006-12-23 07:34:38 (GMT)
committerJunio C Hamano <junkio@cox.net>2006-12-29 19:36:45 (GMT)
commit40be82723ca35d4e95daccc3ccf6456f6876430e (patch)
tree21505c4cc32640221ced3e0e7de6ffd2f3245a0b
parentbac2614de3c162de2328f21f2272ffbc30122230 (diff)
downloadgit-40be82723ca35d4e95daccc3ccf6456f6876430e.zip
git-40be82723ca35d4e95daccc3ccf6456f6876430e.tar.gz
git-40be82723ca35d4e95daccc3ccf6456f6876430e.tar.bz2
Ensure core.packedGitWindowSize cannot be less than 2 pages.
We cannot allow a window to be smaller than 2 system pages. This limitation is necessary to support the feature of use_pack() where we always supply at least 20 bytes after the offset to help the object header and delta base parsing routines. If packedGitWindowSize were allowed to be as small as 1 system page then we would be completely unable to access an object header which spanned over a page as we would never be able to arrange a mapping such that the header was contiguous in virtual memory. Signed-off-by: Shawn O. Pearce <spearce@spearce.org> Signed-off-by: Junio C Hamano <junkio@cox.net>
-rw-r--r--config.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/config.c b/config.c
index 21f166e..3b8da56 100644
--- a/config.c
+++ b/config.c
@@ -302,8 +302,8 @@ int git_default_config(const char *var, const char *value)
int pgsz = getpagesize();
packed_git_window_size = git_config_int(var, value);
packed_git_window_size /= pgsz;
- if (!packed_git_window_size)
- packed_git_window_size = 1;
+ if (packed_git_window_size < 2)
+ packed_git_window_size = 2;
packed_git_window_size *= pgsz;
return 0;
}