Ensure core.packedGitWindowSize cannot be less than 2 pages.
authorShawn O. Pearce <spearce@spearce.org>
Sat, 23 Dec 2006 07:34:38 +0000 (02:34 -0500)
committerJunio C Hamano <junkio@cox.net>
Fri, 29 Dec 2006 19:36:45 +0000 (11:36 -0800)
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>
config.c

index 21f166e60881f2144b1f54c21262937b5f8b5877..3b8da569fa72f88023cfab597d0ca9e42a051619 100644 (file)
--- 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;
        }