[net.micro.mac] LightspeedC bug

t-jacobs@utah-cs.UUCP (Tony Jacobs) (06/26/86)

Here is a bug my brother discovered.  This bug still shows up after installing
the recient list of patches (6-11-86?).

#include <stdio.h>
#include <ctype.h>

/*
 Author:	Steven R. Jacobs
			Computer Science Department
			University of Utah
			Salt Lake City, Utah  84112
			(801) 581-8580

LightSpeed Libraries needed: stdio, unix, MacTraps

This program should print only the word "Works" when running correctly.
**MOVE THE FOLLOWING LINE OUTSIDE OF THE COMMENT TO DEMONSTRATE THE BUG** */
/* #define SHOWBUG */


#ifdef SHOWBUG
#define MIDSTRING(ch) ((isspace(ch) || 0) ? 0 : (ch))
#else
#define MIDSTRING(ch) (isspace(ch) ? 0 : (ch))
#endif

main()
{
char word[128], *readtoken();

   printf("%s\n", readtoken("Works incorrectly!", word));
}

/*****************************************************************************/
/* returns first word from a string */
char *readtoken(t, str)
char *t, *str;
{
register int ch;
register char *s;

   ch = *t++;
   for (s = str; *t && (*s++ = MIDSTRING(ch)); ) /* NOT == */
      ch = *t++;
   *(++s) = '\0';
   return (str);
}