To: vim_dev@googlegroups.com Subject: Patch 7.3.577 Fcc: outbox From: Bram Moolenaar 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 *** ../vim-7.3.576/src/misc2.c 2012-02-29 13:58:43.000000000 +0100 --- src/misc2.c 2012-06-29 15:30:54.000000000 +0200 *************** *** 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; *** ../vim-7.3.576/src/option.c 2012-03-28 19:58:34.000000000 +0200 --- src/option.c 2012-06-29 15:31:46.000000000 +0200 *************** *** 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; *** ../vim-7.3.576/src/os_amiga.c 2011-10-20 18:24:16.000000000 +0200 --- src/os_amiga.c 2012-06-29 15:33:59.000000000 +0200 *************** *** 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 } *** ../vim-7.3.576/src/os_msdos.c 2011-06-19 01:14:22.000000000 +0200 --- src/os_msdos.c 2012-06-29 15:33:26.000000000 +0200 *************** *** 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 } *** ../vim-7.3.576/src/os_win16.c 2011-10-20 18:24:16.000000000 +0200 --- src/os_win16.c 2012-06-29 15:34:18.000000000 +0200 *************** *** 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; } *** ../vim-7.3.576/src/os_win32.c 2012-06-29 13:13:59.000000000 +0200 --- src/os_win32.c 2012-06-29 15:39:52.000000000 +0200 *************** *** 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 *** ../vim-7.3.576/src/version.c 2012-06-29 15:04:34.000000000 +0200 --- src/version.c 2012-06-29 15:45:44.000000000 +0200 *************** *** 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 ///