changeset 9939:ccb6461b82df v7.4.2243

commit https://github.com/vim/vim/commit/1b58cdd160c2e0ada0f638679a2aa27e4665fc48 Author: Bram Moolenaar <Bram@vim.org> Date: Mon Aug 22 23:04:33 2016 +0200 patch 7.4.2243 Problem: Warning for assigning negative value to unsigned. (Danek Duvall) Solution: Make cterm_normal_fg_gui_color and _bg_ guicolor_T, cast to long_u only when an unsigned is needed.
author Christian Brabandt <cb@256bit.org>
date Mon, 22 Aug 2016 23:15:07 +0200
parents 5eb7fba8ec4e
children b7b5f6a8607e
files src/globals.h src/gui.c src/gui_gtk_x11.c src/gui_mac.c src/gui_photon.c src/gui_w32.c src/gui_x11.c src/proto/gui_gtk_x11.pro src/proto/gui_mac.pro src/proto/gui_photon.pro src/proto/gui_w32.pro src/proto/gui_x11.pro src/proto/term.pro src/screen.c src/structs.h src/syntax.c src/term.c src/version.c
diffstat 18 files changed, 67 insertions(+), 67 deletions(-) [+]
line wrap: on
line diff
--- a/src/globals.h
+++ b/src/globals.h
@@ -368,8 +368,8 @@ EXTERN int	cterm_normal_fg_color INIT(= 
 EXTERN int	cterm_normal_fg_bold INIT(= 0);
 EXTERN int	cterm_normal_bg_color INIT(= 0);
 #ifdef FEAT_TERMGUICOLORS
-EXTERN long_u	cterm_normal_fg_gui_color INIT(= INVALCOLOR);
-EXTERN long_u	cterm_normal_bg_gui_color INIT(= INVALCOLOR);
+EXTERN guicolor_T cterm_normal_fg_gui_color INIT(= INVALCOLOR);
+EXTERN guicolor_T cterm_normal_bg_gui_color INIT(= INVALCOLOR);
 #endif
 
 #ifdef FEAT_AUTOCMD
--- a/src/gui.c
+++ b/src/gui.c
@@ -4741,7 +4741,7 @@ gui_get_color(char_u *name)
     int
 gui_get_lightness(guicolor_T pixel)
 {
-    long_u	rgb = gui_mch_get_rgb(pixel);
+    long_u	rgb = (long_u)gui_mch_get_rgb(pixel);
 
     return  (int)(  (((rgb >> 16) & 0xff) * 299)
 		   + (((rgb >> 8) & 0xff) * 587)
--- a/src/gui_gtk_x11.c
+++ b/src/gui_gtk_x11.c
@@ -7020,7 +7020,7 @@ gui_mch_enable_scrollbar(scrollbar_T *sb
 /*
  * Return the RGB value of a pixel as long.
  */
-    long_u
+    guicolor_T
 gui_mch_get_rgb(guicolor_T pixel)
 {
 #if GTK_CHECK_VERSION(3,0,0)
@@ -7031,9 +7031,10 @@ gui_mch_get_rgb(guicolor_T pixel)
     gdk_colormap_query_color(gtk_widget_get_colormap(gui.drawarea),
 			     (unsigned long)pixel, &color);
 
-    return (((unsigned)color.red   & 0xff00) << 8)
+    return (guicolor_T)(
+	    (((unsigned)color.red   & 0xff00) << 8)
 	 |  ((unsigned)color.green & 0xff00)
-	 | (((unsigned)color.blue  & 0xff00) >> 8);
+	 | (((unsigned)color.blue  & 0xff00) >> 8));
 #endif
 }
 
--- a/src/gui_mac.c
+++ b/src/gui_mac.c
@@ -5181,10 +5181,10 @@ gui_mch_start_blink(void)
 /*
  * Return the RGB value of a pixel as long.
  */
-    long_u
+    guicolor_T
 gui_mch_get_rgb(guicolor_T pixel)
 {
-    return (Red(pixel) << 16) + (Green(pixel) << 8) + Blue(pixel);
+    return (guicolor_T)((Red(pixel) << 16) + (Green(pixel) << 8) + Blue(pixel));
 }
 
 
--- a/src/gui_photon.c
+++ b/src/gui_photon.c
@@ -1933,10 +1933,11 @@ gui_mch_setmouse(int x, int y)
 /*
  * Return the RGB value of a pixel as a long.
  */
-    long_u
+    guicolor_T
 gui_mch_get_rgb(guicolor_T pixel)
 {
-    return PgRGB(PgRedValue(pixel), PgGreenValue(pixel), PgBlueValue(pixel));
+    return (guicolor_T)(PgRGB(PgRedValue(pixel),
+				     PgGreenValue(pixel), PgBlueValue(pixel)));
 }
 
     void
--- a/src/gui_w32.c
+++ b/src/gui_w32.c
@@ -2263,11 +2263,11 @@ SaveInst(HINSTANCE hInst)
 /*
  * Return the RGB value of a pixel as a long.
  */
-    long_u
+    guicolor_T
 gui_mch_get_rgb(guicolor_T pixel)
 {
-    return (GetRValue(pixel) << 16) + (GetGValue(pixel) << 8)
-							   + GetBValue(pixel);
+    return (guicolor_T)((GetRValue(pixel) << 16) + (GetGValue(pixel) << 8)
+							   + GetBValue(pixel));
 }
 
 #if defined(FEAT_GUI_DIALOG) || defined(PROTO)
--- a/src/gui_x11.c
+++ b/src/gui_x11.c
@@ -3095,7 +3095,7 @@ gui_x11_blink_cb(
 /*
  * Return the RGB value of a pixel as a long.
  */
-    long_u
+    guicolor_T
 gui_mch_get_rgb(guicolor_T pixel)
 {
     XColor	xc;
@@ -3105,8 +3105,8 @@ gui_mch_get_rgb(guicolor_T pixel)
     xc.pixel = pixel;
     XQueryColor(gui.dpy, colormap, &xc);
 
-    return ((xc.red & 0xff00) << 8) + (xc.green & 0xff00)
-						   + ((unsigned)xc.blue >> 8);
+    return (guicolor_T)(((xc.red & 0xff00) << 8) + (xc.green & 0xff00)
+						   + ((unsigned)xc.blue >> 8));
 }
 
 /*
--- a/src/proto/gui_gtk_x11.pro
+++ b/src/proto/gui_gtk_x11.pro
@@ -66,7 +66,7 @@ void gui_mch_menu_grey(vimmenu_T *menu, 
 void gui_mch_menu_hidden(vimmenu_T *menu, int hidden);
 void gui_mch_draw_menubar(void);
 void gui_mch_enable_scrollbar(scrollbar_T *sb, int flag);
-long_u gui_mch_get_rgb(guicolor_T pixel);
+guicolor_T gui_mch_get_rgb(guicolor_T pixel);
 void gui_mch_getmouse(int *x, int *y);
 void gui_mch_setmouse(int x, int y);
 void gui_mch_mousehide(int hide);
--- a/src/proto/gui_mac.pro
+++ b/src/proto/gui_mac.pro
@@ -78,7 +78,7 @@ void gui_mch_menu_grey(vimmenu_T *menu, 
 void gui_mch_menu_hidden(vimmenu_T *menu, int hidden);
 void gui_mch_draw_menubar(void);
 int gui_mch_get_lightness(guicolor_T pixel);
-long_u gui_mch_get_rgb(guicolor_T pixel);
+guicolor_T gui_mch_get_rgb(guicolor_T pixel);
 int gui_mch_get_mouse_x(void);
 int gui_mch_get_mouse_y(void);
 void gui_mch_setmouse(int x, int y);
--- a/src/proto/gui_photon.pro
+++ b/src/proto/gui_photon.pro
@@ -25,7 +25,7 @@ void mch_set_mouse_shape(int shape);
 void gui_mch_mousehide(int hide);
 void gui_mch_getmouse(int *x, int *y);
 void gui_mch_setmouse(int x, int y);
-long_u gui_mch_get_rgb(guicolor_T pixel);
+guicolor_T gui_mch_get_rgb(guicolor_T pixel);
 void gui_mch_new_colors(void);
 guicolor_T gui_mch_get_color(char_u *name);
 void gui_mch_set_fg_color(guicolor_T color);
--- a/src/proto/gui_w32.pro
+++ b/src/proto/gui_w32.pro
@@ -35,7 +35,7 @@ void gui_mch_enable_menu(int flag);
 void gui_mch_set_menu_pos(int x, int y, int w, int h);
 void gui_mch_menu_hidden(vimmenu_T *menu, int hidden);
 void gui_mch_draw_menubar(void);
-long_u gui_mch_get_rgb(guicolor_T pixel);
+guicolor_T gui_mch_get_rgb(guicolor_T pixel);
 void gui_mch_activate_window(void);
 void gui_mch_show_toolbar(int showit);
 void gui_mch_show_tabline(int showit);
--- a/src/proto/gui_x11.pro
+++ b/src/proto/gui_x11.pro
@@ -24,7 +24,7 @@ void gui_mch_free_fontset(GuiFontset fon
 GuiFontset gui_mch_get_fontset(char_u *name, int giveErrorIfMissing, int fixed_width);
 int fontset_height(XFontSet fs);
 int fontset_height2(XFontSet fs);
-guicolor_T gui_mch_get_color(char_u *reqname);
+guicolor_T gui_mch_get_color(char_u *name);
 void gui_mch_set_fg_color(guicolor_T color);
 void gui_mch_set_bg_color(guicolor_T color);
 void gui_mch_set_sp_color(guicolor_T color);
@@ -58,7 +58,7 @@ int gui_mch_is_blink_off(void);
 void gui_mch_set_blinking(long waittime, long on, long off);
 void gui_mch_stop_blink(void);
 void gui_mch_start_blink(void);
-long_u gui_mch_get_rgb(guicolor_T pixel);
+guicolor_T gui_mch_get_rgb(guicolor_T pixel);
 void gui_x11_callbacks(Widget textArea, Widget vimForm);
 void gui_mch_getmouse(int *x, int *y);
 void gui_mch_setmouse(int x, int y);
--- a/src/proto/term.pro
+++ b/src/proto/term.pro
@@ -1,7 +1,7 @@
 /* term.c */
 guicolor_T termgui_mch_get_color(char_u *name);
 guicolor_T termgui_get_color(char_u *name);
-long_u termgui_mch_get_rgb(guicolor_T color);
+guicolor_T termgui_mch_get_rgb(guicolor_T color);
 int set_termname(char_u *term);
 void set_mouse_termcode(int n, char_u *s);
 void del_mouse_termcode(int n);
@@ -25,8 +25,8 @@ void term_set_winpos(int x, int y);
 void term_set_winsize(int width, int height);
 void term_fg_color(int n);
 void term_bg_color(int n);
-void term_fg_rgb_color(long_u rgb);
-void term_bg_rgb_color(long_u rgb);
+void term_fg_rgb_color(guicolor_T rgb);
+void term_bg_rgb_color(guicolor_T rgb);
 void term_settitle(char_u *title);
 void ttest(int pairs);
 void add_long_to_buf(long_u val, char_u *dst);
--- a/src/screen.c
+++ b/src/screen.c
@@ -7865,7 +7865,7 @@ screen_start_highlight(int attr)
 	    else if (aep != NULL && cterm_normal_fg_bold &&
 #ifdef FEAT_TERMGUICOLORS
 			(p_tgc ?
-			    (aep->ae_u.cterm.fg_rgb != (long_u)INVALCOLOR):
+			    (aep->ae_u.cterm.fg_rgb != INVALCOLOR):
 #endif
 			    (t_colors > 1 && aep->ae_u.cterm.fg_color)
 #ifdef FEAT_TERMGUICOLORS
@@ -7894,9 +7894,9 @@ screen_start_highlight(int attr)
 #ifdef FEAT_TERMGUICOLORS
 		if (p_tgc)
 		{
-		    if (aep->ae_u.cterm.fg_rgb != (long_u)INVALCOLOR)
+		    if (aep->ae_u.cterm.fg_rgb != INVALCOLOR)
 			term_fg_rgb_color(aep->ae_u.cterm.fg_rgb);
-		    if (aep->ae_u.cterm.bg_rgb != (long_u)INVALCOLOR)
+		    if (aep->ae_u.cterm.bg_rgb != INVALCOLOR)
 			term_bg_rgb_color(aep->ae_u.cterm.bg_rgb);
 		}
 		else
@@ -7956,8 +7956,8 @@ screen_stop_highlight(void)
 		    if (aep != NULL &&
 #ifdef FEAT_TERMGUICOLORS
 			    (p_tgc ?
-				(aep->ae_u.cterm.fg_rgb != (long_u)INVALCOLOR ||
-				 aep->ae_u.cterm.bg_rgb != (long_u)INVALCOLOR):
+				(aep->ae_u.cterm.fg_rgb != INVALCOLOR
+				 || aep->ae_u.cterm.bg_rgb != INVALCOLOR):
 #endif
 				(aep->ae_u.cterm.fg_color || aep->ae_u.cterm.bg_color)
 #ifdef FEAT_TERMGUICOLORS
@@ -8014,9 +8014,9 @@ screen_stop_highlight(void)
 #ifdef FEAT_TERMGUICOLORS
 	    if (p_tgc)
 	    {
-		if (cterm_normal_fg_gui_color != (long_u)INVALCOLOR)
+		if (cterm_normal_fg_gui_color != INVALCOLOR)
 		    term_fg_rgb_color(cterm_normal_fg_gui_color);
-		if (cterm_normal_bg_gui_color != (long_u)INVALCOLOR)
+		if (cterm_normal_bg_gui_color != INVALCOLOR)
 		    term_bg_rgb_color(cterm_normal_bg_gui_color);
 	    }
 	    else
@@ -8049,10 +8049,9 @@ reset_cterm_colors(void)
     {
 	/* set Normal cterm colors */
 #ifdef FEAT_TERMGUICOLORS
-	if (p_tgc ?
-		(cterm_normal_fg_gui_color != (long_u)INVALCOLOR
-		 || cterm_normal_bg_gui_color != (long_u)INVALCOLOR):
-		(cterm_normal_fg_color > 0 || cterm_normal_bg_color > 0))
+	if (p_tgc ? (cterm_normal_fg_gui_color != INVALCOLOR
+		 || cterm_normal_bg_gui_color != INVALCOLOR)
+		: (cterm_normal_fg_color > 0 || cterm_normal_bg_color > 0))
 #else
 	if (cterm_normal_fg_color > 0 || cterm_normal_bg_color > 0)
 #endif
@@ -8983,7 +8982,7 @@ can_clear(char_u *p)
 		|| gui.in_use
 #endif
 #ifdef FEAT_TERMGUICOLORS
-		|| (p_tgc && cterm_normal_bg_gui_color == (long_u)INVALCOLOR)
+		|| (p_tgc && cterm_normal_bg_gui_color == INVALCOLOR)
 		|| (!p_tgc && cterm_normal_bg_color == 0)
 #else
 		|| cterm_normal_bg_color == 0
--- a/src/structs.h
+++ b/src/structs.h
@@ -92,8 +92,7 @@ typedef struct {
 # ifdef FEAT_XCLIPBOARD
 #  include <X11/Intrinsic.h>
 # endif
-# define guicolor_T long_u		/* avoid error in prototypes and
-					 * make FEAT_TERMGUICOLORS work */
+# define guicolor_T long
 # define INVALCOLOR ((guicolor_T)0x1ffffff)
 #endif
 
@@ -929,8 +928,8 @@ typedef struct attr_entry
 	    short_u	    fg_color;	/* foreground color number */
 	    short_u	    bg_color;	/* background color number */
 # ifdef FEAT_TERMGUICOLORS
-	    long_u	    fg_rgb;	/* foreground color RGB */
-	    long_u	    bg_rgb;	/* background color RGB */
+	    guicolor_T	    fg_rgb;	/* foreground color RGB */
+	    guicolor_T	    bg_rgb;	/* background color RGB */
 # endif
 	} cterm;
 # ifdef FEAT_GUI
--- a/src/syntax.c
+++ b/src/syntax.c
@@ -8488,7 +8488,7 @@ color_name2handle(char_u *name)
 	    return gui.norm_pixel;
 #endif
 #ifdef FEAT_TERMGUICOLORS
-	if (cterm_normal_fg_gui_color != (long_u)INVALCOLOR)
+	if (cterm_normal_fg_gui_color != INVALCOLOR)
 	    return cterm_normal_fg_gui_color;
 	/* Guess that the foreground is black or white. */
 	return GUI_GET_COLOR((char_u *)(*p_bg == 'l' ? "black" : "white"));
@@ -8503,7 +8503,7 @@ color_name2handle(char_u *name)
 	    return gui.back_pixel;
 #endif
 #ifdef FEAT_TERMGUICOLORS
-	if (cterm_normal_bg_gui_color != (long_u)INVALCOLOR)
+	if (cterm_normal_bg_gui_color != INVALCOLOR)
 	    return cterm_normal_bg_gui_color;
 	/* Guess that the background is white or black. */
 	return GUI_GET_COLOR((char_u *)(*p_bg == 'l' ? "white" : "black"));
@@ -8782,9 +8782,9 @@ hl_combine_attr(int char_attr, int prim_
 		if (spell_aep->ae_u.cterm.bg_color > 0)
 		    new_en.ae_u.cterm.bg_color = spell_aep->ae_u.cterm.bg_color;
 #ifdef FEAT_TERMGUICOLORS
-		if (spell_aep->ae_u.cterm.fg_rgb != (long_u)INVALCOLOR)
+		if (spell_aep->ae_u.cterm.fg_rgb != INVALCOLOR)
 		    new_en.ae_u.cterm.fg_rgb = spell_aep->ae_u.cterm.fg_rgb;
-		if (spell_aep->ae_u.cterm.bg_rgb != (long_u)INVALCOLOR)
+		if (spell_aep->ae_u.cterm.bg_rgb != INVALCOLOR)
 		    new_en.ae_u.cterm.bg_rgb = spell_aep->ae_u.cterm.bg_rgb;
 #endif
 	    }
@@ -9076,7 +9076,7 @@ highlight_color(
 		color = HL_TABLE()[id - 1].sg_gui_bg;
 	    if (color == INVALCOLOR)
 		return NULL;
-	    rgb = GUI_MCH_GET_RGB(color);
+	    rgb = (long_u)GUI_MCH_GET_RGB(color);
 	    sprintf((char *)buf, "#%02x%02x%02x",
 				      (unsigned)(rgb >> 16),
 				      (unsigned)(rgb >> 8) & 255,
--- a/src/term.c
+++ b/src/term.c
@@ -77,9 +77,6 @@ struct builtin_term
 static struct builtin_term *find_builtin_term(char_u *name);
 static void parse_builtin_tcap(char_u *s);
 static void term_color(char_u *s, int n);
-#ifdef FEAT_TERMGUICOLORS
-static void term_rgb_color(char_u *s, long_u rgb);
-#endif
 static void gather_termleader(void);
 #ifdef FEAT_TERMRESPONSE
 static void req_codes_from_term(void);
@@ -1282,10 +1279,10 @@ termgui_get_color(char_u *name)
     return t;
 }
 
-    long_u
+    guicolor_T
 termgui_mch_get_rgb(guicolor_T color)
 {
-    return (long_u)color;
+    return color;
 }
 #endif
 
@@ -2634,24 +2631,13 @@ term_color(char_u *s, int n)
 }
 
 #if defined(FEAT_TERMGUICOLORS) || defined(PROTO)
-    void
-term_fg_rgb_color(long_u rgb)
-{
-    term_rgb_color(T_8F, rgb);
-}
-
-    void
-term_bg_rgb_color(long_u rgb)
-{
-    term_rgb_color(T_8B, rgb);
-}
-
-#define RED(rgb)   ((rgb>>16)&0xFF)
-#define GREEN(rgb) ((rgb>> 8)&0xFF)
-#define BLUE(rgb)  ((rgb    )&0xFF)
+
+#define RED(rgb)   (((long_u)(rgb) >> 16) & 0xFF)
+#define GREEN(rgb) (((long_u)(rgb) >>  8) & 0xFF)
+#define BLUE(rgb)  (((long_u)(rgb)      ) & 0xFF)
 
     static void
-term_rgb_color(char_u *s, long_u rgb)
+term_rgb_color(char_u *s, guicolor_T rgb)
 {
 #define MAX_COLOR_STR_LEN 100
     char	buf[MAX_COLOR_STR_LEN];
@@ -2660,6 +2646,18 @@ term_rgb_color(char_u *s, long_u rgb)
 				  (char *)s, RED(rgb), GREEN(rgb), BLUE(rgb));
     OUT_STR(buf);
 }
+
+    void
+term_fg_rgb_color(guicolor_T rgb)
+{
+    term_rgb_color(T_8F, rgb);
+}
+
+    void
+term_bg_rgb_color(guicolor_T rgb)
+{
+    term_rgb_color(T_8B, rgb);
+}
 #endif
 
 #if (defined(FEAT_TITLE) && (defined(UNIX) || defined(VMS) \
--- a/src/version.c
+++ b/src/version.c
@@ -764,6 +764,8 @@ static char *(features[]) =
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    2243,
+/**/
     2242,
 /**/
     2241,