# HG changeset patch
# User Artem Tikhomirov <tikhomirov.artem@gmail.com>
# Date 1350582667 -7200
# Node ID 2743641f2f126f9b2fc63bcdd5bac4f31f0b7932
# Parent  ba36f66c32b48f180626f0c2cfd7d651d0048e4d
Defect: use of 0 as configuration value for mapio boundary results in every file being memmap-ed

diff -r ba36f66c32b4 -r 2743641f2f12 src/org/tmatesoft/hg/internal/DataAccessProvider.java
--- a/src/org/tmatesoft/hg/internal/DataAccessProvider.java	Thu Oct 18 18:36:13 2012 +0200
+++ b/src/org/tmatesoft/hg/internal/DataAccessProvider.java	Thu Oct 18 19:51:07 2012 +0200
@@ -55,18 +55,23 @@
 	public DataAccessProvider(SessionContext ctx) {
 		context = ctx;
 		PropertyMarshal pm = new PropertyMarshal(ctx);
-		mapioMagicBoundary = pm.getInt(CFG_PROPERTY_MAPIO_LIMIT, DEFAULT_MAPIO_LIMIT);
+		mapioMagicBoundary = mapioBoundaryValue(pm.getInt(CFG_PROPERTY_MAPIO_LIMIT, DEFAULT_MAPIO_LIMIT));
 		bufferSize = pm.getInt(CFG_PROPERTY_FILE_BUFFER_SIZE, DEFAULT_FILE_BUFFER);
 		mapioBufSize = pm.getInt(CFG_PROPERTY_MAPIO_BUFFER_SIZE, DEFAULT_MAPIO_BUFFER);
 	}
 	
 	public DataAccessProvider(SessionContext ctx, int mapioBoundary, int regularBufferSize, int mapioBufferSize) {
 		context = ctx;
-		mapioMagicBoundary = mapioBoundary == 0 ? Integer.MAX_VALUE : mapioBoundary;
+		mapioMagicBoundary = mapioBoundaryValue(mapioBoundary);
 		bufferSize = regularBufferSize;
 		mapioBufSize = mapioBufferSize;
 	}
 
+	// ensure contract of CFG_PROPERTY_MAPIO_LIMIT, for mapioBoundary == 0 use MAX_VALUE so that no file is memmap-ed
+	private static int mapioBoundaryValue(int mapioBoundary) {
+		return mapioBoundary == 0 ? Integer.MAX_VALUE : mapioBoundary;
+	}
+
 	public DataAccess create(File f) {
 		if (!f.exists()) {
 			return new DataAccess();