To: vim_dev@googlegroups.com Subject: Patch 8.2.4639 Fcc: outbox From: Bram Moolenaar Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ------------ Patch 8.2.4639 Problem: Not sufficient parenthesis in preprocessor macros. Solution: Add more parenthesis. (closes #10031) Files: src/globals.h, src/gui.h, src/if_py_both.h, src/macros.h, src/option.h, src/regexp.h, src/spell.h, src/structs.h, src/vim.h, src/vim9.h *** ../vim-8.2.4638/src/globals.h 2022-03-24 15:15:05.352816711 +0000 --- src/globals.h 2022-03-27 19:58:48.487951863 +0100 *************** *** 702,711 **** EXTERN win_T *prevwin INIT(= NULL); // previous window #define ONE_WINDOW (firstwin == lastwin) #define W_NEXT(wp) ((wp)->w_next) ! #define FOR_ALL_WINDOWS(wp) for (wp = firstwin; wp != NULL; wp = wp->w_next) #define FOR_ALL_FRAMES(frp, first_frame) \ ! for (frp = first_frame; frp != NULL; frp = frp->fr_next) ! #define FOR_ALL_TABPAGES(tp) for (tp = first_tabpage; tp != NULL; tp = tp->tp_next) #define FOR_ALL_WINDOWS_IN_TAB(tp, wp) \ for ((wp) = ((tp) == NULL || (tp) == curtab) \ ? firstwin : (tp)->tp_firstwin; (wp); (wp) = (wp)->w_next) --- 702,711 ---- EXTERN win_T *prevwin INIT(= NULL); // previous window #define ONE_WINDOW (firstwin == lastwin) #define W_NEXT(wp) ((wp)->w_next) ! #define FOR_ALL_WINDOWS(wp) for ((wp) = firstwin; (wp) != NULL; (wp) = (wp)->w_next) #define FOR_ALL_FRAMES(frp, first_frame) \ ! for ((frp) = first_frame; (frp) != NULL; (frp) = (frp)->fr_next) ! #define FOR_ALL_TABPAGES(tp) for ((tp) = first_tabpage; (tp) != NULL; (tp) = (tp)->tp_next) #define FOR_ALL_WINDOWS_IN_TAB(tp, wp) \ for ((wp) = ((tp) == NULL || (tp) == curtab) \ ? firstwin : (tp)->tp_firstwin; (wp); (wp) = (wp)->w_next) *************** *** 778,784 **** // Iterate through all the signs placed in a buffer #define FOR_ALL_SIGNS_IN_BUF(buf, sign) \ ! for (sign = buf->b_signlist; sign != NULL; sign = sign->se_next) // Flag that is set when switching off 'swapfile'. It means that all blocks // are to be loaded into memory. Shouldn't be global... --- 778,784 ---- // Iterate through all the signs placed in a buffer #define FOR_ALL_SIGNS_IN_BUF(buf, sign) \ ! for ((sign) = (buf)->b_signlist; (sign) != NULL; (sign) = (sign)->se_next) // Flag that is set when switching off 'swapfile'. It means that all blocks // are to be loaded into memory. Shouldn't be global... *************** *** 1000,1006 **** #define DBCS_CHT 950 // taiwan #define DBCS_CHTU 9950 // euc-tw #define DBCS_2BYTE 1 // 2byte- ! #define DBCS_DEBUG -1 EXTERN int enc_dbcs INIT(= 0); // One of DBCS_xxx values if // DBCS encoding --- 1000,1006 ---- #define DBCS_CHT 950 // taiwan #define DBCS_CHTU 9950 // euc-tw #define DBCS_2BYTE 1 // 2byte- ! #define DBCS_DEBUG (-1) EXTERN int enc_dbcs INIT(= 0); // One of DBCS_xxx values if // DBCS encoding *** ../vim-8.2.4638/src/gui.h 2022-03-13 14:44:59.396422421 +0000 --- src/gui.h 2022-03-27 19:58:48.487951863 +0100 *************** *** 100,106 **** #endif // Indices for arrays of scrollbars ! #define SBAR_NONE -1 #define SBAR_LEFT 0 #define SBAR_RIGHT 1 #define SBAR_BOTTOM 2 --- 100,106 ---- #endif // Indices for arrays of scrollbars ! #define SBAR_NONE (-1) #define SBAR_LEFT 0 #define SBAR_RIGHT 1 #define SBAR_BOTTOM 2 *************** *** 198,207 **** typedef long guicolor_T; // handle for a GUI color; for X11 this should // be "Pixel", but that's an unsigned and we // need a signed value ! #define INVALCOLOR (guicolor_T)-11111 // number for invalid color; on 32 bit // displays there is a tiny chance this is an // actual color ! #define CTERMCOLOR (guicolor_T)-11110 // only used for cterm.bg_rgb and // cterm.fg_rgb: use cterm color #ifdef FEAT_GUI_GTK --- 198,207 ---- typedef long guicolor_T; // handle for a GUI color; for X11 this should // be "Pixel", but that's an unsigned and we // need a signed value ! #define INVALCOLOR ((guicolor_T)-11111) // number for invalid color; on 32 bit // displays there is a tiny chance this is an // actual color ! #define CTERMCOLOR ((guicolor_T)-11110) // only used for cterm.bg_rgb and // cterm.fg_rgb: use cterm color #ifdef FEAT_GUI_GTK *** ../vim-8.2.4638/src/if_py_both.h 2022-01-09 12:57:45.118669470 +0000 --- src/if_py_both.h 2022-03-27 19:58:48.487951863 +0100 *************** *** 30,38 **** #define PyErr_FORMAT2(exc, str, arg1, arg2) PyErr_Format(exc, _(str), arg1,arg2) #define PyErr_VIM_FORMAT(str, arg) PyErr_FORMAT(VimError, str, arg) ! #define Py_TYPE_NAME(obj) (obj->ob_type->tp_name == NULL \ ? "(NULL)" \ ! : obj->ob_type->tp_name) #define RAISE_NO_EMPTY_KEYS PyErr_SET_STRING(PyExc_ValueError, \ N_("empty keys are not allowed")) --- 30,38 ---- #define PyErr_FORMAT2(exc, str, arg1, arg2) PyErr_Format(exc, _(str), arg1,arg2) #define PyErr_VIM_FORMAT(str, arg) PyErr_FORMAT(VimError, str, arg) ! #define Py_TYPE_NAME(obj) ((obj)->ob_type->tp_name == NULL \ ? "(NULL)" \ ! : (obj)->ob_type->tp_name) #define RAISE_NO_EMPTY_KEYS PyErr_SET_STRING(PyExc_ValueError, \ N_("empty keys are not allowed")) *************** *** 6686,6692 **** } #define PYTYPE_READY(type) \ ! if (PyType_Ready(&type)) \ return -1; static int --- 6686,6692 ---- } #define PYTYPE_READY(type) \ ! if (PyType_Ready(&(type))) \ return -1; static int *** ../vim-8.2.4638/src/macros.h 2022-01-31 14:59:33.518943700 +0000 --- src/macros.h 2022-03-27 19:58:48.487951863 +0100 *************** *** 232,242 **** // Advance multi-byte pointer, do not skip over composing chars. #define MB_CPTR_ADV(p) p += enc_utf8 ? utf_ptr2len(p) : (*mb_ptr2len)(p) // Backup multi-byte pointer. Only use with "p" > "s" ! ! #define MB_PTR_BACK(s, p) p -= has_mbyte ? ((*mb_head_off)(s, p - 1) + 1) : 1 // get length of multi-byte char, not including composing chars #define MB_CPTR2LEN(p) (enc_utf8 ? utf_ptr2len(p) : (*mb_ptr2len)(p)) ! #define MB_COPY_CHAR(f, t) do { if (has_mbyte) mb_copy_char(&f, &t); else *t++ = *f++; } while (0) #define MB_CHARLEN(p) (has_mbyte ? mb_charlen(p) : (int)STRLEN(p)) #define MB_CHAR2LEN(c) (has_mbyte ? mb_char2len(c) : 1) #define PTR2CHAR(p) (has_mbyte ? mb_ptr2char(p) : (int)*(p)) --- 232,242 ---- // Advance multi-byte pointer, do not skip over composing chars. #define MB_CPTR_ADV(p) p += enc_utf8 ? utf_ptr2len(p) : (*mb_ptr2len)(p) // Backup multi-byte pointer. Only use with "p" > "s" ! ! #define MB_PTR_BACK(s, p) p -= has_mbyte ? ((*mb_head_off)(s, (p) - 1) + 1) : 1 // get length of multi-byte char, not including composing chars #define MB_CPTR2LEN(p) (enc_utf8 ? utf_ptr2len(p) : (*mb_ptr2len)(p)) ! #define MB_COPY_CHAR(f, t) do { if (has_mbyte) mb_copy_char(&(f), &(t)); else *(t)++ = *(f)++; } while (0) #define MB_CHARLEN(p) (has_mbyte ? mb_charlen(p) : (int)STRLEN(p)) #define MB_CHAR2LEN(c) (has_mbyte ? mb_char2len(c) : 1) #define PTR2CHAR(p) (has_mbyte ? mb_ptr2char(p) : (int)*(p)) *************** *** 313,319 **** * HI2DI() converts a hashitem pointer to a dictitem pointer. */ #define DI2HIKEY(di) ((di)->di_key) ! #define HIKEY2DI(p) ((dictitem_T *)(p - offsetof(dictitem_T, di_key))) #define HI2DI(hi) HIKEY2DI((hi)->hi_key) /* --- 313,319 ---- * HI2DI() converts a hashitem pointer to a dictitem pointer. */ #define DI2HIKEY(di) ((di)->di_key) ! #define HIKEY2DI(p) ((dictitem_T *)((p) - offsetof(dictitem_T, di_key))) #define HI2DI(hi) HIKEY2DI((hi)->hi_key) /* *************** *** 376,384 **** #define CHECK_LIST_MATERIALIZE(l) if ((l)->lv_first == &range_list_item) range_list_materialize(l) // Inlined version of ga_grow() with optimized condition that it fails. ! #define GA_GROW_FAILS(gap, n) unlikely((((gap)->ga_maxlen - (gap)->ga_len < n) ? ga_grow_inner((gap), (n)) : OK) == FAIL) // Inlined version of ga_grow() with optimized condition that it succeeds. ! #define GA_GROW_OK(gap, n) likely((((gap)->ga_maxlen - (gap)->ga_len < n) ? ga_grow_inner((gap), (n)) : OK) == OK) #ifndef MIN # define MIN(a, b) ((a) < (b) ? (a) : (b)) --- 376,384 ---- #define CHECK_LIST_MATERIALIZE(l) if ((l)->lv_first == &range_list_item) range_list_materialize(l) // Inlined version of ga_grow() with optimized condition that it fails. ! #define GA_GROW_FAILS(gap, n) unlikely((((gap)->ga_maxlen - (gap)->ga_len < (n)) ? ga_grow_inner((gap), (n)) : OK) == FAIL) // Inlined version of ga_grow() with optimized condition that it succeeds. ! #define GA_GROW_OK(gap, n) likely((((gap)->ga_maxlen - (gap)->ga_len < (n)) ? ga_grow_inner((gap), (n)) : OK) == OK) #ifndef MIN # define MIN(a, b) ((a) < (b) ? (a) : (b)) *** ../vim-8.2.4638/src/option.h 2022-02-24 13:28:36.570222354 +0000 --- src/option.h 2022-03-27 19:58:48.487951863 +0100 *************** *** 131,137 **** #endif // end-of-line style ! #define EOL_UNKNOWN -1 // not defined yet #define EOL_UNIX 0 // NL #define EOL_DOS 1 // CR NL #define EOL_MAC 2 // CR --- 131,137 ---- #endif // end-of-line style ! #define EOL_UNKNOWN (-1) // not defined yet #define EOL_UNIX 0 // NL #define EOL_DOS 1 // CR NL #define EOL_MAC 2 // CR *************** *** 1328,1333 **** }; // Value for b_p_ul indicating the global value must be used. ! #define NO_LOCAL_UNDOLEVEL -123456 #endif // _OPTION_H_ --- 1328,1333 ---- }; // Value for b_p_ul indicating the global value must be used. ! #define NO_LOCAL_UNDOLEVEL (-123456) #endif // _OPTION_H_ *** ../vim-8.2.4638/src/regexp.h 2019-11-30 17:54:35.000000000 +0000 --- src/regexp.h 2022-03-27 19:58:48.487951863 +0100 *************** *** 31,37 **** * In the NFA engine: how many states are allowed */ #define NFA_MAX_STATES 100000 ! #define NFA_TOO_EXPENSIVE -1 // Which regexp engine to use? Needed for vim_regcomp(). // Must match with 'regexpengine'. --- 31,37 ---- * In the NFA engine: how many states are allowed */ #define NFA_MAX_STATES 100000 ! #define NFA_TOO_EXPENSIVE (-1) // Which regexp engine to use? Needed for vim_regcomp(). // Must match with 'regexpengine'. *** ../vim-8.2.4638/src/spell.h 2022-01-05 16:08:59.524426437 +0000 --- src/spell.h 2022-03-27 19:58:48.487951863 +0100 *************** *** 211,219 **** // Values for SP_*ERROR are negative, positive values are used by // read_cnt_string(). ! #define SP_TRUNCERROR -1 // spell file truncated error ! #define SP_FORMERROR -2 // format error in spell file ! #define SP_OTHERERROR -3 // other error while reading spell file /* * Structure used in "b_langp", filled from 'spelllang'. --- 211,219 ---- // Values for SP_*ERROR are negative, positive values are used by // read_cnt_string(). ! #define SP_TRUNCERROR (-1) // spell file truncated error ! #define SP_FORMERROR (-2) // format error in spell file ! #define SP_OTHERERROR (-3) // other error while reading spell file /* * Structure used in "b_langp", filled from 'spelllang'. *** ../vim-8.2.4638/src/structs.h 2022-03-21 19:45:13.200420997 +0000 --- src/structs.h 2022-03-27 19:58:48.487951863 +0100 *************** *** 2830,2836 **** // flags for use of ":lmap" and IM control long b_p_iminsert; // input mode for insert long b_p_imsearch; // input mode for search ! #define B_IMODE_USE_INSERT -1 // Use b_p_iminsert value for search #define B_IMODE_NONE 0 // Input via none #define B_IMODE_LMAP 1 // Input via langmap #define B_IMODE_IM 2 // Input via input method --- 2830,2836 ---- // flags for use of ":lmap" and IM control long b_p_iminsert; // input mode for insert long b_p_imsearch; // input mode for search ! #define B_IMODE_USE_INSERT (-1) // Use b_p_iminsert value for search #define B_IMODE_NONE 0 // Input via none #define B_IMODE_LMAP 1 // Input via langmap #define B_IMODE_IM 2 // Input via input method *************** *** 3698,3704 **** winopt_T w_onebuf_opt; winopt_T w_allbuf_opt; // transform a pointer to a "onebuf" option into a "allbuf" option ! #define GLOBAL_WO(p) ((char *)p + sizeof(winopt_T)) // A few options have local flags for P_INSECURE. #ifdef FEAT_STL_OPT --- 3698,3704 ---- winopt_T w_onebuf_opt; winopt_T w_allbuf_opt; // transform a pointer to a "onebuf" option into a "allbuf" option ! #define GLOBAL_WO(p) ((char *)(p) + sizeof(winopt_T)) // A few options have local flags for P_INSECURE. #ifdef FEAT_STL_OPT *************** *** 4462,4468 **** #define FIO_ENCRYPTED 0x1000 // encrypt written bytes #define FIO_NOCONVERT 0x2000 // skip encoding conversion #define FIO_UCSBOM 0x4000 // check for BOM at start of file ! #define FIO_ALL -1 // allow all formats // When converting, a read() or write() may leave some bytes to be converted // for the next call. The value is guessed... --- 4462,4468 ---- #define FIO_ENCRYPTED 0x1000 // encrypt written bytes #define FIO_NOCONVERT 0x2000 // skip encoding conversion #define FIO_UCSBOM 0x4000 // check for BOM at start of file ! #define FIO_ALL (-1) // allow all formats // When converting, a read() or write() may leave some bytes to be converted // for the next call. The value is guessed... *** ../vim-8.2.4638/src/vim.h 2022-03-24 11:22:07.215294108 +0000 --- src/vim.h 2022-03-27 19:58:48.491951885 +0100 *************** *** 864,872 **** #define FINDFILE_DIR 1 // only directories #define FINDFILE_BOTH 2 // files and directories ! #define W_ENDCOL(wp) (wp->w_wincol + wp->w_width) #ifdef FEAT_MENU ! # define W_WINROW(wp) (wp->w_winrow + wp->w_winbar_height) #else # define W_WINROW(wp) (wp->w_winrow) #endif --- 864,872 ---- #define FINDFILE_DIR 1 // only directories #define FINDFILE_BOTH 2 // files and directories ! #define W_ENDCOL(wp) ((wp)->w_wincol + (wp)->w_width) #ifdef FEAT_MENU ! # define W_WINROW(wp) ((wp)->w_winrow + (wp)->w_winbar_height) #else # define W_WINROW(wp) (wp->w_winrow) #endif *************** *** 887,893 **** # define SST_MAX_ENTRIES 1000 // maximal size for state stack array # define SST_FIX_STATES 7 // size of sst_stack[]. # define SST_DIST 16 // normal distance between entries ! # define SST_INVALID (synstate_T *)-1 // invalid syn_state pointer # define HL_CONTAINED 0x01 // not used on toplevel # define HL_TRANSP 0x02 // has no highlighting --- 887,893 ---- # define SST_MAX_ENTRIES 1000 // maximal size for state stack array # define SST_FIX_STATES 7 // size of sst_stack[]. # define SST_DIST 16 // normal distance between entries ! # define SST_INVALID ((synstate_T *)-1) // invalid syn_state pointer # define HL_CONTAINED 0x01 // not used on toplevel # define HL_TRANSP 0x02 // has no highlighting *************** *** 949,955 **** #define GETFILE_ERROR 1 // normal error #define GETFILE_NOT_WRITTEN 2 // "not written" error #define GETFILE_SAME_FILE 0 // success, same file ! #define GETFILE_OPEN_OTHER -1 // success, opened another file #define GETFILE_UNUSED 8 #define GETFILE_SUCCESS(x) ((x) <= 0) --- 949,955 ---- #define GETFILE_ERROR 1 // normal error #define GETFILE_NOT_WRITTEN 2 // "not written" error #define GETFILE_SAME_FILE 0 // success, same file ! #define GETFILE_OPEN_OTHER (-1) // success, opened another file #define GETFILE_UNUSED 8 #define GETFILE_SUCCESS(x) ((x) <= 0) *************** *** 971,979 **** // Values for "noremap" argument of ins_typebuf(). Also used for // map->m_noremap and menu->noremap[]. #define REMAP_YES 0 // allow remapping ! #define REMAP_NONE -1 // no remapping ! #define REMAP_SCRIPT -2 // remap script-local mappings only ! #define REMAP_SKIP -3 // no remapping for first char // Values for mch_call_shell() second argument #define SHELL_FILTER 1 // filtering text --- 971,979 ---- // Values for "noremap" argument of ins_typebuf(). Also used for // map->m_noremap and menu->noremap[]. #define REMAP_YES 0 // allow remapping ! #define REMAP_NONE (-1) // no remapping ! #define REMAP_SCRIPT (-2) // remap script-local mappings only ! #define REMAP_SKIP (-3) // no remapping for first char // Values for mch_call_shell() second argument #define SHELL_FILTER 1 // filtering text *************** *** 1069,1075 **** // for lnum argument in do_ecmd() #define ECMD_LASTL (linenr_T)0 // use last position in loaded file ! #define ECMD_LAST (linenr_T)-1 // use last position in all files #define ECMD_ONE (linenr_T)1 // use first line // flags for do_cmdline() --- 1069,1075 ---- // for lnum argument in do_ecmd() #define ECMD_LASTL (linenr_T)0 // use last position in loaded file ! #define ECMD_LAST ((linenr_T)-1) // use last position in all files #define ECMD_ONE (linenr_T)1 // use first line // flags for do_cmdline() *************** *** 1265,1277 **** #define MAX_SWAP_PAGE_SIZE 50000 // Special values for current_sctx.sc_sid. ! #define SID_MODELINE -1 // when using a modeline ! #define SID_CMDARG -2 // for "--cmd" argument ! #define SID_CARG -3 // for "-c" argument ! #define SID_ENV -4 // for sourcing environment variable ! #define SID_ERROR -5 // option was reset because of an error ! #define SID_NONE -6 // don't set scriptID ! #define SID_WINLAYOUT -7 // changing window size /* * Events for autocommands. --- 1265,1277 ---- #define MAX_SWAP_PAGE_SIZE 50000 // Special values for current_sctx.sc_sid. ! #define SID_MODELINE (-1) // when using a modeline ! #define SID_CMDARG (-2) // for "--cmd" argument ! #define SID_CARG (-3) // for "-c" argument ! #define SID_ENV (-4) // for sourcing environment variable ! #define SID_ERROR (-5) // option was reset because of an error ! #define SID_NONE (-6) // don't set scriptID ! #define SID_WINLAYOUT (-7) // changing window size /* * Events for autocommands. *************** *** 1723,1729 **** // Prefer using emsgf(), because perror() may send the output to the wrong // destination and mess up the screen. #ifdef HAVE_STRERROR ! # define PERROR(msg) (void)semsg("%s: %s", (char *)msg, strerror(errno)) #else # define PERROR(msg) do_perror(msg) #endif --- 1723,1729 ---- // Prefer using emsgf(), because perror() may send the output to the wrong // destination and mess up the screen. #ifdef HAVE_STRERROR ! # define PERROR(msg) (void)semsg("%s: %s", (char *)(msg), strerror(errno)) #else # define PERROR(msg) do_perror(msg) #endif *************** *** 1921,1927 **** (((unsigned)((code) & 0xC0) >> 6) + 1) #define SET_NUM_MOUSE_CLICKS(code, num) \ ! (code) = ((code) & 0x3f) | ((((num) - 1) & 3) << 6) // Added to mouse column for GUI when 'mousefocus' wants to give focus to a // window by simulating a click on its status line. We could use up to 128 * --- 1921,1927 ---- (((unsigned)((code) & 0xC0) >> 6) + 1) #define SET_NUM_MOUSE_CLICKS(code, num) \ ! ((code) = ((code) & 0x3f) | ((((num) - 1) & 3) << 6)) // Added to mouse column for GUI when 'mousefocus' wants to give focus to a // window by simulating a click on its status line. We could use up to 128 * *************** *** 2515,2522 **** #endif // values for vim_handle_signal() that are not a signal ! #define SIGNAL_BLOCK -1 ! #define SIGNAL_UNBLOCK -2 #if !defined(UNIX) && !defined(VMS) # define vim_handle_signal(x) 0 #endif --- 2515,2522 ---- #endif // values for vim_handle_signal() that are not a signal ! #define SIGNAL_BLOCK (-1) ! #define SIGNAL_UNBLOCK (-2) #if !defined(UNIX) && !defined(VMS) # define vim_handle_signal(x) 0 #endif *************** *** 2528,2535 **** // behavior for bad character, "++bad=" argument #define BAD_REPLACE '?' // replace it with '?' (default) ! #define BAD_KEEP -1 // leave it ! #define BAD_DROP -2 // erase it // last argument for do_source() #define DOSO_NONE 0 --- 2528,2535 ---- // behavior for bad character, "++bad=" argument #define BAD_REPLACE '?' // replace it with '?' (default) ! #define BAD_KEEP (-1) // leave it ! #define BAD_DROP (-2) // erase it // last argument for do_source() #define DOSO_NONE 0 *************** *** 2552,2562 **** // direction for nv_mousescroll() and ins_mousescroll() #define MSCR_DOWN 0 // DOWN must be FALSE #define MSCR_UP 1 ! #define MSCR_LEFT -1 ! #define MSCR_RIGHT -2 ! #define KEYLEN_PART_KEY -1 // keylen value for incomplete key-code ! #define KEYLEN_PART_MAP -2 // keylen value for incomplete mapping #define KEYLEN_REMOVED 9999 // keylen value for removed sequence // Return values from win32_fileinfo(). --- 2552,2562 ---- // direction for nv_mousescroll() and ins_mousescroll() #define MSCR_DOWN 0 // DOWN must be FALSE #define MSCR_UP 1 ! #define MSCR_LEFT (-1) ! #define MSCR_RIGHT (-2) ! #define KEYLEN_PART_KEY (-1) // keylen value for incomplete key-code ! #define KEYLEN_PART_MAP (-2) // keylen value for incomplete mapping #define KEYLEN_REMOVED 9999 // keylen value for removed sequence // Return values from win32_fileinfo(). *************** *** 2716,2723 **** #if defined(HAVE_GETTIMEOFDAY) && defined(HAVE_SYS_TIME_H) # define ELAPSED_TIMEVAL ! # define ELAPSED_INIT(v) gettimeofday(&v, NULL) ! # define ELAPSED_FUNC(v) elapsed(&v) typedef struct timeval elapsed_T; long elapsed(struct timeval *start_tv); #elif defined(MSWIN) --- 2716,2723 ---- #if defined(HAVE_GETTIMEOFDAY) && defined(HAVE_SYS_TIME_H) # define ELAPSED_TIMEVAL ! # define ELAPSED_INIT(v) gettimeofday(&(v), NULL) ! # define ELAPSED_FUNC(v) elapsed(&(v)) typedef struct timeval elapsed_T; long elapsed(struct timeval *start_tv); #elif defined(MSWIN) *************** *** 2734,2741 **** #endif // Replacement for nchar used by nv_replace(). ! #define REPLACE_CR_NCHAR -1 ! #define REPLACE_NL_NCHAR -2 // flags for term_start() #define TERM_START_NOJOB 1 --- 2734,2741 ---- #endif // Replacement for nchar used by nv_replace(). ! #define REPLACE_CR_NCHAR (-1) ! #define REPLACE_NL_NCHAR (-2) // flags for term_start() #define TERM_START_NOJOB 1 *** ../vim-8.2.4638/src/vim9.h 2022-03-27 16:29:49.876153380 +0100 --- src/vim9.h 2022-03-27 19:58:48.491951885 +0100 *************** *** 515,524 **** extern garray_T def_functions; // Used for "lnum" when a range is to be taken from the stack. ! #define LNUM_VARIABLE_RANGE -999 // Used for "lnum" when a range is to be taken from the stack and "!" is used. ! #define LNUM_VARIABLE_RANGE_ABOVE -888 // Keep in sync with get_compile_type() #ifdef FEAT_PROFILE --- 515,524 ---- extern garray_T def_functions; // Used for "lnum" when a range is to be taken from the stack. ! #define LNUM_VARIABLE_RANGE (-999) // Used for "lnum" when a range is to be taken from the stack and "!" is used. ! #define LNUM_VARIABLE_RANGE_ABOVE (-888) // Keep in sync with get_compile_type() #ifdef FEAT_PROFILE *************** *** 530,536 **** : (dfunc)->df_instr)) #else # define INSTRUCTIONS(dfunc) \ ! (debug_break_level > 0 || may_break_in_function(dfunc->df_ufunc) \ ? (dfunc)->df_instr_debug \ : (dfunc)->df_instr) #endif --- 530,536 ---- : (dfunc)->df_instr)) #else # define INSTRUCTIONS(dfunc) \ ! (debug_break_level > 0 || may_break_in_function((dfunc)->df_ufunc) \ ? (dfunc)->df_instr_debug \ : (dfunc)->df_instr) #endif *** ../vim-8.2.4638/src/version.c 2022-03-27 19:26:29.334889006 +0100 --- src/version.c 2022-03-27 20:00:22.444403403 +0100 *************** *** 752,753 **** --- 752,755 ---- { /* Add new patch number below this line */ + /**/ + 4639, /**/ -- ARTHUR: I command you as King of the Britons to stand aside! BLACK KNIGHT: I move for no man. The Quest for the Holy Grail (Monty Python) /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ /// \\\ \\\ sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ /// \\\ help me help AIDS victims -- http://ICCF-Holland.org ///