changeset 1230:cab25717c6a6 v7.1b.002

updated for version 7.1b-002
author vimboss
date Fri, 11 May 2007 18:15:45 +0000
parents 198a695ca8e7
children de2bde5aa8ff
files src/memfile.c src/version.c
diffstat 2 files changed, 21 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/src/memfile.c
+++ b/src/memfile.c
@@ -190,7 +190,25 @@ mf_open(fname, flags)
     mfp->mf_blocknr_min = -1;
     mfp->mf_neg_count = 0;
     mfp->mf_infile_count = mfp->mf_blocknr_max;
-    mfp->mf_used_count_max = p_mm * 1024 / mfp->mf_page_size;
+
+    /*
+     * Compute maximum number of pages ('maxmem' is in Kbyte):
+     *	'mammem' * 1Kbyte / page-size-in-bytes.
+     * Avoid overflow by first reducing page size as much as possible.
+     */
+    {
+	int	    shift = 10;
+	unsigned    page_size = mfp->mf_page_size;
+
+	while (shift > 0 && (page_size & 1) == 0)
+	{
+	    page_size = page_size >> 1;
+	    --shift;
+	}
+	mfp->mf_used_count_max = (p_mm << shift) / page_size;
+	if (mfp->mf_used_count_max < 10)
+	    mfp->mf_used_count_max = 10;
+    }
 
     return mfp;
 }
--- a/src/version.c
+++ b/src/version.c
@@ -667,6 +667,8 @@ static char *(features[]) =
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    2,
+/**/
     1,
 /**/
     0