[comp.windows.x] Why Bug Fix #68 Fails on Suns

stevep@stellar.UUCP (Steve Pitschke) (12/02/87)

The following patch works on our systems.  I discovered that the optimization
pass of the sun 3.2 compiler generates mixed up register usage for the
'fixed' c syntax.  The 3.4 compiler generates good code, which is why
a some sun users observed the problem and others did not.

						Reliable Source

*** /tmp/d02359	Wed Dec  2 15:09:08 1987
--- window.c	Wed Dec  2 12:50:39 1987
***************
*** 820,827 ****
--- 820,832 ----
      pVlist = vlist;
      while (vmask) 
      {
+ #ifdef sun
+ 	index = ffs(vmask) - 1;
+ 	vmask &= ~(index = (1 << index));
+ #else
  	index = 1 << (ffs(vmask) - 1);
  	vmask &= ~index;
+ #endif sun
  	switch (index) 
          {
  	  case CWBackPixmap: 
***************
*** 2002,2009 ****
--- 2007,2019 ----
      tmask = mask & ~ChangeMask;
      while (tmask) 
      {
+ #ifdef sun
+ 	index = ffs(tmask) - 1;
+ 	tmask &= ~(index = (1 << index));
+ #else
  	index = 1 << (ffs(tmask) - 1);
  	tmask &= ~index;
+ #endif sun
  	switch (index) 
          {
            case CWBorderWidth: