diff --git a/src/cmd/devdraw/x11-draw.c b/src/cmd/devdraw/x11-draw.c
index f4c1bea..685ad88 100644
--- a/src/cmd/devdraw/x11-draw.c
+++ b/src/cmd/devdraw/x11-draw.c
@@ -44,7 +44,7 @@
 {
 	u32int sdval;
 	uint m, state;
-	Memimage *src, *dst, *mask;
+	Memimage *dst, *mask;
 	Point dp, mp;
 	Rectangle r;
 	Xmem *xdst, *xmask;
@@ -56,7 +56,6 @@
 	dst   = par->dst;
 	mask  = par->mask;
 	r     = par->r;
-	src   = par->src;
 	state = par->state;
 
 	/*
diff --git a/src/cmd/fontsrv/x11.c b/src/cmd/fontsrv/x11.c
index 01f2b96..a76ac2c 100644
--- a/src/cmd/fontsrv/x11.c
+++ b/src/cmd/fontsrv/x11.c
@@ -113,7 +113,7 @@
 	int i;
 	Fontchar *fc, *fc0;
 	Memsubfont *sf;
-	Point rect_points[4];
+	//Point rect_points[4];
 
 	xf = nil;
 	for(xfp=xfont, xfe=xfont+nxfont; xfp != xfe; xfp++) {
diff --git a/src/cmd/join.c b/src/cmd/join.c
index 9ce127f..263772f 100644
--- a/src/cmd/join.c
+++ b/src/cmd/join.c
@@ -10,7 +10,7 @@
 #define comp() runecmp(ppi[F1][j1],ppi[F2][j2])
 FILE *f[2];
 Rune buf[2][BUFSIZ];	/*input lines */
-Rune *ppi[2][NFLD+1];	/* pointers to fields in lines */
+Rune *ppi[4][NFLD+1];	/* pointers to fields in lines */
 Rune *s1,*s2;
 #define j1 joinj1
 #define j2 joinj2
diff --git a/src/cmd/postscript/tr2post/utils.c b/src/cmd/postscript/tr2post/utils.c
index 9b51d03..f914a1c 100644
--- a/src/cmd/postscript/tr2post/utils.c
+++ b/src/cmd/postscript/tr2post/utils.c
@@ -242,9 +242,8 @@
 void
 specialout(char *stoken) {
 	Rune rune;
-	int i;
 
-	i = chartorune(&rune, stoken);
+	chartorune(&rune, stoken);
 	glyphout(rune, stoken, TRUE);
 }
 
diff --git a/src/cmd/rio/showevent/ShowEvent.c b/src/cmd/rio/showevent/ShowEvent.c
index 7af9ded..56f620d 100644
--- a/src/cmd/rio/showevent/ShowEvent.c
+++ b/src/cmd/rio/showevent/ShowEvent.c
@@ -761,7 +761,7 @@
 	printf("type=%s%s", GetType((XEvent*)ev), sep);
 	printf("serial=%ld%s", ev->serial, sep);
 	printf("send_event=%s%s", TorF(ev->send_event), sep);
-	printf("display=0x%x%s", (unsigned)ev->display, sep);
+	printf("display=0x%p%s", ev->display, sep);
 
 	switch (ev->type) {
 	case MotionNotify:
diff --git a/src/libventi/file.c b/src/libventi/file.c
index ec9c1b7..e97df39 100644
--- a/src/libventi/file.c
+++ b/src/libventi/file.c
@@ -498,7 +498,6 @@
 	VtBlock *b;
 	int type, size;
 	uchar *score;
-	VtEntry oe;
 
 	switch(p->type){
 	case VtDataType:
@@ -531,8 +530,6 @@
 	if(vtglobaltolocal(b->score) != NilBlock)
 		return b;
 
-	oe = *e;
-
 	/*
 	 * Copy on write.
 	 */
@@ -560,7 +557,6 @@
 growdepth(VtFile *r, VtBlock *p, VtEntry *e, int depth)
 {
 	VtBlock *b, *bb;
-	VtEntry oe;
 
 	assert(ISLOCKED(r));
 	assert(depth <= VtPointerDepth);
@@ -569,8 +565,6 @@
 	if(b == nil)
 		return -1;
 
-	oe = *e;
-
 	/*
 	 * Keep adding layers until we get to the right depth
 	 * or an error occurs.
@@ -599,7 +593,6 @@
 shrinkdepth(VtFile *r, VtBlock *p, VtEntry *e, int depth)
 {
 	VtBlock *b, *nb, *ob, *rb;
-	VtEntry oe;
 
 	assert(ISLOCKED(r));
 	assert(depth <= VtPointerDepth);
@@ -612,7 +605,6 @@
 	 * Walk down to the new root block.
 	 * We may stop early, but something is better than nothing.
 	 */
-	oe = *e;
 
 	ob = nil;
 	b = rb;
