| To: vim_dev@googlegroups.com |
| Subject: Patch 7.3.577 |
| Fcc: outbox |
| From: Bram Moolenaar <Bram@moolenaar.net> |
| Mime-Version: 1.0 |
| Content-Type: text/plain; charset=UTF-8 |
| Content-Transfer-Encoding: 8bit |
| |
| |
| Patch 7.3.577 |
| Problem: Size of memory does not fit in 32 bit unsigned. |
| Solution: Use Kbyte instead of byte. Call GlobalMemoryStatusEx() instead of |
| GlobalMemoryStatus() when available. |
| Files: src/misc2.c, src/option.c, src/os_amiga.c, src/os_msdos.c, |
| src/os_win16.c, src/os_win32.c |
| |
| |
| |
| |
| |
| *** 815,820 **** |
| --- 815,821 ---- |
| #else |
| # define KEEP_ROOM (2 * 8192L) |
| #endif |
| + #define KEEP_ROOM_KB (KEEP_ROOM / 1024L) |
| |
| /* |
| * Note: if unsigned is 16 bits we can only allocate up to 64K with alloc(). |
| |
| *** 940,946 **** |
| allocated = 0; |
| # endif |
| /* 3. check for available memory: call mch_avail_mem() */ |
| ! if (mch_avail_mem(TRUE) < KEEP_ROOM && !releasing) |
| { |
| free((char *)p); /* System is low... no go! */ |
| p = NULL; |
| --- 941,947 ---- |
| allocated = 0; |
| # endif |
| /* 3. check for available memory: call mch_avail_mem() */ |
| ! if (mch_avail_mem(TRUE) < KEEP_ROOM_KB && !releasing) |
| { |
| free((char *)p); /* System is low... no go! */ |
| p = NULL; |
| |
| |
| |
| *** 3154,3160 **** |
| { |
| #ifdef HAVE_AVAIL_MEM |
| /* Use amount of memory available at this moment. */ |
| ! n = (mch_avail_mem(FALSE) >> 11); |
| #else |
| # ifdef HAVE_TOTAL_MEM |
| /* Use amount of memory available to Vim. */ |
| --- 3154,3160 ---- |
| { |
| #ifdef HAVE_AVAIL_MEM |
| /* Use amount of memory available at this moment. */ |
| ! n = (mch_avail_mem(FALSE) >> 1); |
| #else |
| # ifdef HAVE_TOTAL_MEM |
| /* Use amount of memory available to Vim. */ |
| |
| *** 6702,6708 **** |
| { |
| for (s = *varp; *s;) |
| { |
| ! while(*s == ',' || *s == ' ') |
| s++; |
| if (!*s) |
| break; |
| --- 6702,6708 ---- |
| { |
| for (s = *varp; *s;) |
| { |
| ! while (*s == ',' || *s == ' ') |
| s++; |
| if (!*s) |
| break; |
| |
| *** 7391,7397 **** |
| new_unnamed |= CLIP_UNNAMED; |
| p += 7; |
| } |
| ! else if (STRNCMP(p, "unnamedplus", 11) == 0 |
| && (p[11] == ',' || p[11] == NUL)) |
| { |
| new_unnamed |= CLIP_UNNAMED_PLUS; |
| --- 7391,7397 ---- |
| new_unnamed |= CLIP_UNNAMED; |
| p += 7; |
| } |
| ! else if (STRNCMP(p, "unnamedplus", 11) == 0 |
| && (p[11] == ',' || p[11] == NUL)) |
| { |
| new_unnamed |= CLIP_UNNAMED_PLUS; |
| |
| |
| |
| *** 191,206 **** |
| } |
| |
| /* |
| ! * Return amount of memory still available. |
| */ |
| long_u |
| mch_avail_mem(special) |
| int special; |
| { |
| #ifdef __amigaos4__ |
| ! return (long_u)AvailMem(MEMF_ANY); |
| #else |
| ! return (long_u)AvailMem(special ? (long)MEMF_CHIP : (long)MEMF_ANY); |
| #endif |
| } |
| |
| --- 191,206 ---- |
| } |
| |
| /* |
| ! * Return amount of memory still available in Kbyte. |
| */ |
| long_u |
| mch_avail_mem(special) |
| int special; |
| { |
| #ifdef __amigaos4__ |
| ! return (long_u)AvailMem(MEMF_ANY) >> 10; |
| #else |
| ! return (long_u)(AvailMem(special ? (long)MEMF_CHIP : (long)MEMF_ANY)) >> 10; |
| #endif |
| } |
| |
| |
| |
| |
| *** 550,564 **** |
| #endif |
| |
| /* |
| ! * Return amount of memory currently available. |
| */ |
| long_u |
| mch_avail_mem(int special) |
| { |
| #ifdef DJGPP |
| ! return _go32_dpmi_remaining_virtual_memory(); |
| #else |
| ! return coreleft(); |
| #endif |
| } |
| |
| --- 550,564 ---- |
| #endif |
| |
| /* |
| ! * Return amount of memory currently available in Kbyte. |
| */ |
| long_u |
| mch_avail_mem(int special) |
| { |
| #ifdef DJGPP |
| ! return _go32_dpmi_remaining_virtual_memory() >> 10; |
| #else |
| ! return coreleft() >> 10; |
| #endif |
| } |
| |
| |
| |
| |
| *** 379,391 **** |
| |
| |
| /* |
| ! * How much memory is available? |
| */ |
| long_u |
| mch_avail_mem( |
| int special) |
| { |
| ! return GetFreeSpace(0); |
| } |
| |
| |
| --- 379,391 ---- |
| |
| |
| /* |
| ! * How much memory is available in Kbyte? |
| */ |
| long_u |
| mch_avail_mem( |
| int special) |
| { |
| ! return GetFreeSpace(0) >> 10; |
| } |
| |
| |
| |
| |
| |
| *** 4992,5009 **** |
| |
| |
| /* |
| ! * How much memory is available? |
| * Return sum of available physical and page file memory. |
| */ |
| /*ARGSUSED*/ |
| long_u |
| mch_avail_mem(int special) |
| { |
| ! MEMORYSTATUS ms; |
| |
| ! ms.dwLength = sizeof(MEMORYSTATUS); |
| ! GlobalMemoryStatus(&ms); |
| ! return (long_u) (ms.dwAvailPhys + ms.dwAvailPageFile); |
| } |
| |
| #ifdef FEAT_MBYTE |
| --- 4992,5020 ---- |
| |
| |
| /* |
| ! * How much memory is available in Kbyte? |
| * Return sum of available physical and page file memory. |
| */ |
| /*ARGSUSED*/ |
| long_u |
| mch_avail_mem(int special) |
| { |
| ! if (g_PlatformId != VER_PLATFORM_WIN32_NT) |
| ! { |
| ! MEMORYSTATUS ms; |
| |
| ! ms.dwLength = sizeof(MEMORYSTATUS); |
| ! GlobalMemoryStatus(&ms); |
| ! return (long_u)((ms.dwAvailPhys + ms.dwAvailPageFile) >> 10); |
| ! } |
| ! else |
| ! { |
| ! MEMORYSTATUSEX ms; |
| ! |
| ! ms.dwLength = sizeof(MEMORYSTATUSEX); |
| ! GlobalMemoryStatusEx(&ms); |
| ! return (long_u)((ms.ullAvailPhys + ms.ullAvailPageFile) >> 10); |
| ! } |
| } |
| |
| #ifdef FEAT_MBYTE |
| |
| |
| |
| *** 716,717 **** |
| --- 716,719 ---- |
| { /* Add new patch number below this line */ |
| + /**/ |
| + 577, |
| /**/ |
| |
| -- |
| hundred-and-one symptoms of being an internet addict: |
| 75. You start wondering whether you could actually upgrade your brain |
| with a Pentium Pro microprocessor 80. The upgrade works just fine. |
| |
| /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ |
| /// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ |
| \\\ an exciting new programming language -- http://www.Zimbu.org /// |
| \\\ help me help AIDS victims -- http://ICCF-Holland.org /// |