Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP Path: utzoo!mnetor!seismo!mcvax!botter!tjalk!mark From: mark@cs.vu.nl (Rooi de M) Newsgroups: comp.os.minix Subject: PRINTK Message-ID: <850@tjalk.cs.vu.nl> Date: Fri, 3-Jul-87 05:50:39 EDT Article-I.D.: tjalk.850 Posted: Fri Jul 3 05:50:39 1987 Date-Received: Sat, 4-Jul-87 12:54:27 EDT Reply-To: mark@cs.vu.nl (Rooi de M) Distribution: world Organization: VU Informatica, Amsterdam Lines: 21 Line 14 in file printk.c says int *valp; Line 43: case 's': p = (char *) *valp++; This increments 'valp' with the size of an integer, where it should be incremented by the size of a pointer. When these sizes differ, as with the ACK m68k2 backend I am using to port minix to the Atari 1040, things go wrong. The fix is easy: Use an extra variable 'pp', similar in function to 'lp', as follows: long l, *lp; char **pp; lp = (long *) valp; pp = (char **) valp; . . . case 's': p = *pp++; valp = (int *)pp;