[prev in list] [next in list] [prev in thread] [next in thread]
List: vim-dev
Subject: patch 7.1b.002
From: Bram Moolenaar <Bram () moolenaar ! net>
Date: 2007-05-11 18:17:31
Message-ID: 200705111817.l4BIHVgm053223 () moolenaar ! net
[Download RAW message or body]
Patch 7.1b.002
Problem: When 'maxmem' is large there can be an overflow in computations.
(Thomas Wiegner)
Solution: Use the same mechanism as in mch_total_mem(): first reduce the
multiplier as much as possible.
Files: src/memfile.c
*** ../vim-7.1b.001/src/memfile.c Thu May 10 21:17:23 2007
--- src/memfile.c Fri May 11 19:50:12 2007
***************
*** 190,196 ****
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;
return mfp;
}
--- 190,214 ----
mfp->mf_blocknr_min = -1;
mfp->mf_neg_count = 0;
mfp->mf_infile_count = mfp->mf_blocknr_max;
!
! /*
! * 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;
}
*** ../vim-7.1b.001/src/version.c Thu May 10 22:19:40 2007
--- src/version.c Fri May 11 20:09:22 2007
***************
*** 668,669 ****
--- 668,671 ----
{ /* Add new patch number below this line */
+ /**/
+ 2,
/**/
--
hundred-and-one symptoms of being an internet addict:
99. The hum of a cooling fan and the click of keys is comforting to you.
/// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
\\\ download, build and distribute -- http://www.A-A-P.org ///
\\\ help me help AIDS victims -- http://ICCF-Holland.org ///
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic