diff --git a/src/gui_at_fs.c b/src/gui_at_fs.c
index 3c0c992..0606fba 100644
--- a/src/gui_at_fs.c
+++ b/src/gui_at_fs.c
@@ -495,7 +495,7 @@
 static int SFcompareLogins(const void *p, const void *q);
 
     static int
-SFcompareLogins(const void *p, *q)
+SFcompareLogins(const void *p, const void *q)
 {
     return strcmp(((SFLogin *)p)->name, ((SFLogin *)q)->name);
 }
@@ -571,7 +571,7 @@
 static int SFfindHomeDir(char *begin, char *end);
 
     static int
-SFfindHomeDir(char *begin, *end)
+SFfindHomeDir(char *begin, char *end)
 {
     char	save;
     char	*theRest;
@@ -2709,9 +2709,12 @@
     char	*prompt,
     char	*init_path,
     int		(*show_entry)(),
-    int		x, y,
-    guicolor_T	fg, bg,
-    guicolor_T	scroll_fg, scroll_bg) /* The "Scrollbar" group colors */
+    int		x,
+    int		y,
+    guicolor_T	fg,
+    guicolor_T	bg,
+    guicolor_T	scroll_fg,
+    guicolor_T	scroll_bg) /* The "Scrollbar" group colors */
 {
     static int	firstTime = 1;
     XEvent	event;
diff --git a/src/gui_at_sb.c b/src/gui_at_sb.c
index 98caad5..189647a 100644
--- a/src/gui_at_sb.c
+++ b/src/gui_at_sb.c
@@ -234,7 +234,8 @@
     static void
 FillArea(
     ScrollbarWidget	sbw,
-    Position		top, bottom,
+    Position		top,
+    Position		bottom,
     int			fill,
     int			draw_shadow)
 {
@@ -641,7 +642,7 @@
 
 
     static Boolean
-CompareEvents(XEvent *oldEvent, *newEvent)
+CompareEvents(XEvent *oldEvent, XEvent *newEvent)
 {
 #define Check(field) if (newEvent->field != oldEvent->field) return False;
 
@@ -713,7 +714,8 @@
     static void
 ExtractPosition(
     XEvent	    *event,
-    Position	    *x, *y,	/* RETURN */
+    Position	    *x,		/* RETURN */
+    Position	    *y,		/* RETURN */
     unsigned int    *state)	/* RETURN */
 {
     switch (event->type)
@@ -816,7 +818,7 @@
  * Same as above, but for floating numbers.
  */
     static float
-FloatInRange(float num, small, big)
+FloatInRange(float num, float small, float big)
 {
     return (num < small) ? small : ((num > big) ? big : num);
 }
@@ -984,7 +986,7 @@
 }
 
     static float
-FractionLoc(ScrollbarWidget sbw, int x, y)
+FractionLoc(ScrollbarWidget sbw, int x, int y)
 {
     int	    margin;
     float   height, width;
@@ -1165,7 +1167,7 @@
  * Set the scroll bar to the given location.
  */
     void
-vim_XawScrollbarSetThumb(Widget w, double top, shown, max)
+vim_XawScrollbarSetThumb(Widget w, double top, double shown, double max)
 {
     ScrollbarWidget sbw = (ScrollbarWidget) w;
 
diff --git a/src/gui_athena.c b/src/gui_athena.c
index 2895978..941c74e 100644
--- a/src/gui_athena.c
+++ b/src/gui_athena.c
@@ -89,7 +89,8 @@
     static void
 gui_athena_scroll_cb_jump(
     Widget	w UNUSED,
-    XtPointer	client_data, call_data)
+    XtPointer	client_data,
+    XtPointer	call_data)
 {
     scrollbar_T *sb, *sb_info;
     long	value;
@@ -124,7 +125,8 @@
     static void
 gui_athena_scroll_cb_scroll(
     Widget	w UNUSED,
-    XtPointer	client_data, call_data)
+    XtPointer	client_data,
+    XtPointer	call_data)
 {
     scrollbar_T *sb, *sb_info;
     long	value;
diff --git a/src/gui_x11.c b/src/gui_x11.c
index af3c3a9..e6e6f61 100644
--- a/src/gui_x11.c
+++ b/src/gui_x11.c
@@ -1761,7 +1761,7 @@
  * Get the position of the top left corner of the window.
  */
     int
-gui_mch_get_winpos(int *x, *y)
+gui_mch_get_winpos(int *x, int *y)
 {
     Dimension	xpos, ypos;
 
@@ -1779,7 +1779,7 @@
  * coordinates.
  */
     void
-gui_mch_set_winpos(int x, y)
+gui_mch_set_winpos(int x, int y)
 {
     XtVaSetValues(vimShell,
 	XtNx,	x,
@@ -3181,7 +3181,7 @@
 static XtIntervalId	blink_timer = (XtIntervalId)0;
 
     void
-gui_mch_set_blinking(long waittime, on, off)
+gui_mch_set_blinking(long waittime, long on, long off)
 {
     blink_waittime = waittime;
     blink_ontime = on;
diff --git a/src/version.c b/src/version.c
index 5cc31d5..2117796 100644
--- a/src/version.c
+++ b/src/version.c
@@ -747,6 +747,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    1209,
+/**/
     1208,
 /**/
     1207,
