diff --git a/src/Makefile b/src/Makefile
index 8c949b5..b2dc015 100644
--- a/src/Makefile
+++ b/src/Makefile
@@ -1509,12 +1509,20 @@
 # - Temporarily move the ./configure script to ./configure.save.  Don't
 #   overwrite it, it's probably the result of an aborted autoconf.
 # - Use sed to change ./config.log to auto/config.log in the configure script.
+# Autoconf 2.5x (2.59 at least) produces a few more files that we need to take
+# care of:
+# - configure.lineno: has the line numbers replaced with $LINENO.  That
+#   improves patches a LOT, thus use it instead (until someone says it doesn't
+#   work on some system).
+# - autom4te.cache directory is created and not cleaned up.  Delete it.
+# - Uses ">config.log" instead of "./config.log".
 autoconf:
 	if test ! -f configure.save; then mv configure configure.save; fi
 	autoconf
-	sed -e 's+\./config.log+auto/config.log+' configure > auto/configure
+	sed -e 's+>config.log+>auto/config.log+' -e 's+\./config.log+auto/config.log+' configure > auto/configure
 	chmod 755 auto/configure
 	mv -f configure.save configure
+	-rm -rf autom4te.cache
 	-rm -f auto/config.status auto/config.cache
 
 # Re-execute this Makefile to include the new auto/config.mk produced by
@@ -2063,12 +2071,15 @@
 		sed -e 's+^\([^ ]*\.o\)+objects/\1+' >> tmp_make; done
 	mv tmp_make Makefile
 
+# Run lint.  Clean up the *.ln files that are sometimes left behind.
 lint:
 	lint $(LINT_OPTIONS) $(LINT_CFLAGS) -DUSE_SNIFF -DHANGUL_INPUT $(LINT_SRC)
+	-rm -f *.ln
 
 # Check dosinst.c with lint.
 lintinstall:
 	lint $(LINT_OPTIONS) -DWIN32 -DUNIX_LINT dosinst.c
+	-rm -f dosinst.ln
 
 ###########################################################################
 
diff --git a/src/gui_gtk_f.c b/src/gui_gtk_f.c
index be53473..4a5edf1 100644
--- a/src/gui_gtk_f.c
+++ b/src/gui_gtk_f.c
@@ -116,6 +116,7 @@
 
     g_return_if_fail(GTK_IS_FORM(form));
 
+    /* LINTED: avoid warning: conversion to 'unsigned long' */
     child = g_new(GtkFormChild, 1);
 
     child->widget = child_widget;
diff --git a/src/gui_xmebw.c b/src/gui_xmebw.c
index fbe0ba9..d63cf5a 100644
--- a/src/gui_xmebw.c
+++ b/src/gui_xmebw.c
@@ -346,8 +346,8 @@
 
     XGetGeometry(dpy, pix, &root, &x, &y, &width, &height, &border, &depth);
 
-    if (eb->enhancedbutton.label_location == XmTOP
-	    || eb->enhancedbutton.label_location == XmBOTTOM)
+    if (eb->enhancedbutton.label_location == (int)XmTOP
+	    || eb->enhancedbutton.label_location == (int)XmBOTTOM)
 	shift = eb->primitive.shadow_thickness / 2;
     else
 	shift = eb->primitive.shadow_thickness / 2;
diff --git a/src/if_perl.xs b/src/if_perl.xs
index 96608ef..072ddcd 100644
--- a/src/if_perl.xs
+++ b/src/if_perl.xs
@@ -464,7 +464,9 @@
     return sv_bless(rv, gv_stashpv("VI" #TNAME, TRUE));		\
 }
 
+/* LINTED: avoid warning: cast from pointer to integer of different size */
 newANYrv(win_T, WIN)
+/* LINTED: avoid warning: cast from pointer to integer of different size */
 newANYrv(buf_T, BUF)
 
 /*
@@ -684,8 +686,8 @@
     {
     dSP;
     length = strlen((char *)eap->arg);
-    sv = newSV(length + sizeof("sub VIM::perldo {")-1 + 1);
-    sv_setpvn(sv, "sub VIM::perldo {", sizeof("sub VIM::perldo {")-1);
+    sv = newSV(length + sizeof("sub VIM::perldo {") - 1 + 1);
+    sv_setpvn(sv, "sub VIM::perldo {", sizeof("sub VIM::perldo {") - 1);
     sv_catpvn(sv, (char *)eap->arg, length);
     sv_catpvn(sv, "}", 1);
     perl_eval_sv(sv, G_DISCARD | G_NOARGS);
@@ -701,7 +703,7 @@
     SAVETMPS;
     for (i = eap->line1; i <= eap->line2; i++)
     {
-	sv_setpv(GvSV(PL_defgv),(char *)ml_get(i));
+	sv_setpv(GvSV(PL_defgv), (char *)ml_get(i));
 	PUSHMARK(sp);
 	perl_call_pv("VIM::perldo", G_SCALAR | G_EVAL);
 	str = SvPV(GvSV(PL_errgv), length);
diff --git a/src/mbyte.c b/src/mbyte.c
index 33c0fdf..f53a8ec 100644
--- a/src/mbyte.c
+++ b/src/mbyte.c
@@ -5430,11 +5430,13 @@
 #ifdef FEAT_GUI_GTK
     if (xim_input_style & (int)GDK_IM_STATUS_AREA)
 	return gui.char_height;
-#elif defined FEAT_GUI_KDE
-    /* always return zero? */
 #else
+# if defined FEAT_GUI_KDE
+    /* always return zero? */
+# else
     if (status_area_enabled)
 	return gui.char_height;
+# endif
 #endif
     return 0;
 }
diff --git a/src/os_unix.c b/src/os_unix.c
index 81fa424..7c5b899 100644
--- a/src/os_unix.c
+++ b/src/os_unix.c
@@ -1767,9 +1767,10 @@
 					     NULL, NULL, 0, NULL, NULL, NULL);
 # else
 	XTextProperty	text_prop;
+	char		*c_title = (char *)title;
 
 	/* directly from example 3-18 "basicwin" of Xlib Programming Manual */
-	(void)XStringListToTextProperty((char **)&title, 1, &text_prop);
+	(void)XStringListToTextProperty(&c_title, 1, &text_prop);
 	XSetWMProperties(x11_display, x11_window, &text_prop,
 					     NULL, NULL, 0, NULL, NULL, NULL);
 # endif
@@ -1803,8 +1804,9 @@
 						   NULL, 0, NULL, NULL, NULL);
 # else
 	XTextProperty	text_prop;
+	char		*c_icon = (char *)icon;
 
-	(void)XStringListToTextProperty((char **)&icon, 1, &text_prop);
+	(void)XStringListToTextProperty(&c_icon, 1, &text_prop);
 	XSetWMProperties(x11_display, x11_window, NULL, &text_prop,
 						   NULL, 0, NULL, NULL, NULL);
 # endif
@@ -4001,6 +4003,7 @@
 
 	    if (WIFEXITED(status))
 	    {
+		/* LINTED avoid "bitwise operation on signed value" */
 		retval = WEXITSTATUS(status);
 		if (retval && !emsg_silent)
 		{
diff --git a/src/quickfix.c b/src/quickfix.c
index 0c5a050..2a2ee14 100644
--- a/src/quickfix.c
+++ b/src/quickfix.c
@@ -617,9 +617,9 @@
 
 	if (qf_add_entry(&qfprev,
 			directory,
-			*namebuf || directory
+			(*namebuf || directory)
 			    ? namebuf
-			    : currfile && valid ? currfile : NULL,
+			    : ((currfile && valid) ? currfile : (char_u *)NULL),
 			errmsg,
 			lnum,
 			col,
