diff -u kbd-1.12/src/psffontop.c kbd-1.12/src/psffontop.c
--- kbd-1.12/src/psffontop.c	2005-03-12 00:48:30.075310872 +0100
+++ kbd-1.12/src/psffontop.c	2005-05-14 10:49:59.000000000 +0900
@@ -59,7 +59,6 @@
 
 static unsigned int
 assemble_ucs2(char **inptr, int cnt) {
-	unsigned char **in = (unsigned char **) inptr;
 	unsigned int u1, u2;
 
 	if (cnt < 2) {
@@ -68,8 +67,8 @@
 		exit(EX_DATAERR);
 	}
 
-	u1 = *(*in)++;
-	u2 = *(*in)++;
+	u1 = (unsigned char)*(*inptr)++;
+	u2 = (unsigned char)*(*inptr)++;
 	return (u1 | (u2 << 8));
 }
 
@@ -110,7 +109,6 @@
  */
 static void
 get_uni_entry(char **inptr, char **endptr, struct unicode_list *up, int utf8) {
-	unsigned char **in = (unsigned char **) inptr;
 	unsigned char uc;
 	unicode unichar;
 	int inseq = 0;
@@ -126,14 +124,14 @@
 			exit(EX_DATAERR);
 		}
 		if (utf8) {
-			uc = *(*in)++;
+			uc = *(*inptr)++;
 			if (uc == PSF2_SEPARATOR)
 				break;
 			if (uc == PSF2_STARTSEQ) {
 				inseq = 1;
 				continue;
 			}
-			--(*in);
+			--(*inptr);
 			unichar = assemble_utf8(inptr, *endptr - *inptr);
 		} else {
 			unichar = assemble_ucs2(inptr, *endptr - *inptr);