mirror of
https://github.com/vim/vim.git
synced 2025-10-01 04:54:07 -04:00
patch 7.4.2062
Problem: Using dummy variable to compute struct member offset. Solution: Use offsetof().
This commit is contained in:
@@ -1649,18 +1649,6 @@ EXTERN int did_add_timer INIT(= FALSE);
|
|||||||
#ifdef FEAT_EVAL
|
#ifdef FEAT_EVAL
|
||||||
EXTERN time_T time_for_testing INIT(= 0);
|
EXTERN time_T time_for_testing INIT(= 0);
|
||||||
|
|
||||||
/*
|
|
||||||
* In a hashtab item "hi_key" points to "di_key" in a dictitem.
|
|
||||||
* This avoids adding a pointer to the hashtab item.
|
|
||||||
* DI2HIKEY() converts a dictitem pointer to a hashitem key pointer.
|
|
||||||
* HIKEY2DI() converts a hashitem key pointer to a dictitem pointer.
|
|
||||||
* HI2DI() converts a hashitem pointer to a dictitem pointer.
|
|
||||||
*/
|
|
||||||
EXTERN dictitem_T dumdi;
|
|
||||||
# define DI2HIKEY(di) ((di)->di_key)
|
|
||||||
# define HIKEY2DI(p) ((dictitem_T *)(p - (dumdi.di_key - (char_u *)&dumdi)))
|
|
||||||
# define HI2DI(hi) HIKEY2DI((hi)->hi_key)
|
|
||||||
|
|
||||||
/* Abort conversion to string after a recursion error. */
|
/* Abort conversion to string after a recursion error. */
|
||||||
EXTERN int did_echo_string_emsg INIT(= FALSE);
|
EXTERN int did_echo_string_emsg INIT(= FALSE);
|
||||||
#endif
|
#endif
|
||||||
|
11
src/macros.h
11
src/macros.h
@@ -353,3 +353,14 @@
|
|||||||
# endif
|
# endif
|
||||||
# endif
|
# endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
/*
|
||||||
|
* In a hashtab item "hi_key" points to "di_key" in a dictitem.
|
||||||
|
* This avoids adding a pointer to the hashtab item.
|
||||||
|
* DI2HIKEY() converts a dictitem pointer to a hashitem key pointer.
|
||||||
|
* HIKEY2DI() converts a hashitem key pointer to a dictitem pointer.
|
||||||
|
* 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)
|
||||||
|
@@ -600,8 +600,7 @@ typedef struct wordcount_S
|
|||||||
char_u wc_word[1]; /* word, actually longer */
|
char_u wc_word[1]; /* word, actually longer */
|
||||||
} wordcount_T;
|
} wordcount_T;
|
||||||
|
|
||||||
static wordcount_T dumwc;
|
#define WC_KEY_OFF offsetof(wordcount_T, wc_word)
|
||||||
#define WC_KEY_OFF (unsigned)(dumwc.wc_word - (char_u *)&dumwc)
|
|
||||||
#define HI2WC(hi) ((wordcount_T *)((hi)->hi_key - WC_KEY_OFF))
|
#define HI2WC(hi) ((wordcount_T *)((hi)->hi_key - WC_KEY_OFF))
|
||||||
#define MAXWORDCOUNT 0xffff
|
#define MAXWORDCOUNT 0xffff
|
||||||
|
|
||||||
|
@@ -758,6 +758,8 @@ static char *(features[]) =
|
|||||||
|
|
||||||
static int included_patches[] =
|
static int included_patches[] =
|
||||||
{ /* Add new patch number below this line */
|
{ /* Add new patch number below this line */
|
||||||
|
/**/
|
||||||
|
2062,
|
||||||
/**/
|
/**/
|
||||||
2061,
|
2061,
|
||||||
/**/
|
/**/
|
||||||
|
@@ -505,6 +505,9 @@ typedef unsigned long u8char_T; /* long should be 32 bits or more */
|
|||||||
#endif
|
#endif
|
||||||
#include <stdarg.h>
|
#include <stdarg.h>
|
||||||
|
|
||||||
|
/* for offsetof() */
|
||||||
|
#include <stddef.h>
|
||||||
|
|
||||||
#if defined(HAVE_SYS_SELECT_H) && \
|
#if defined(HAVE_SYS_SELECT_H) && \
|
||||||
(!defined(HAVE_SYS_TIME_H) || defined(SYS_SELECT_WITH_SYS_TIME))
|
(!defined(HAVE_SYS_TIME_H) || defined(SYS_SELECT_WITH_SYS_TIME))
|
||||||
# include <sys/select.h>
|
# include <sys/select.h>
|
||||||
|
Reference in New Issue
Block a user