[comp.sys.mac.programmer] MPW C 3.x bugs

ccc_ldo@waikato.ac.nz (Lawrence D'Oliveiro, Waikato University) (03/07/90)

Here's some example code, adapted from NCSA Telnet, that I've tried compiling
with both version 3.0 and 3.1 of MPW C. This code actually illustrates two
separate bugs, one in each statement.

In the first statement, the compiler succeeds in making almost complete
nonsense of the conditional expression. In the second statement, it puts
the result of the comparison into the condition codes, and then inadvertently
destroys them before it gets around to storing the value in the destination.

------------------------------------------------------------------------------

#include <QuickDraw.h>

#define MB_READ     0
#define MB_WRITE    1
#define MB_DISABLE  0x80
#define FAMODE 0

int
    MacBinary,
    ftptmode,
    mbfp,
    defaultv;

struct
  {
    int monospaced;
  }
    *RSlocal;
int
    i;

main()
  {
    mbfp = MBopen
      (
	"test",
	defaultv,
	    MB_WRITE
	+
	  (
	    (!MacBinary) || (ftptmode == FAMODE) ? MB_DISABLE : 0
	  )
      );

    RSlocal[i].monospaced = CharWidth('I') == CharWidth('W');
  }

------------------------------------------------------------------------------

Lawrence D'Oliveiro, Computer Services Dept, University of Waikato,
Hamilton, New Zealand
ldo@waikato.ac.nz