[comp.windows.x] V11 fix #31, server/os/4.2bsd/oscolor.c, correct alignment

RWS@ZERMATT.LCS.MIT.EDU (Robert Scheifler) (10/27/87)

    Date: Wed, 14 Oct 87 17:03:10 PDT
    From: mips!lefevre@decwrl.dec.com (Patrick LeFevre)

    SYNOPSIS:
	    Server dies w/ bus error due to alignment violation
	    in os/4.2bsd/oscolor.c
    DESCRIPTION:
	    The pointer dbent.ptr returned by the dbm fetch(dbent)
	    is (char *) type,  and is casted to a (short *) which
	    can create bus errors (on some machines) for the fetch
	    operation in following assigns like on line 56:
		    *pred = prgb->red;

    FIX:
	in server/os/4.2bsd/oscolor.c:

*** /tmp/,RCSt1003619	Thu Oct 22 11:55:32 1987
--- oscolor.c	Thu Oct 22 11:54:53 1987
***************
*** 21,27 ****
  SOFTWARE.
  
  ******************************************************************/
! /* $Header: oscolor.c,v 1.8 87/09/11 07:50:53 toddb Exp $ */
  #include <dbm.h>
  #include "rgb.h"
  
--- 21,27 ----
  SOFTWARE.
  
  ******************************************************************/
! /* $Header: oscolor.c,v 1.9 87/10/22 11:54:26 rws Exp $ */
  #include <dbm.h>
  #include "rgb.h"
  
***************
*** 32,37 ****
--- 32,39 ----
   * one database open at a time.
   */
  extern int havergb;
+ 
+ /*ARGSUSED*/
  int
  OsLookupColor(screen, name, len, pred, pgreen, pblue)
      int		screen;
***************
*** 41,47 ****
  
  {
      datum	dbent;
!     RGB		*prgb;
  
      if(!havergb)
  	return(0);
--- 43,49 ----
  
  {
      datum	dbent;
!     RGB		rgb;
  
      if(!havergb)
  	return(0);
***************
*** 52,61 ****
  
      if(dbent.dptr)
      {
! 	prgb = (RGB *) dbent.dptr;
! 	*pred = prgb->red;
! 	*pgreen = prgb->green;
! 	*pblue = prgb->blue;
  	return (1);
      }
      return(0);
--- 54,63 ----
  
      if(dbent.dptr)
      {
! 	bcopy(dbent.dptr, (char *) &rgb, sizeof (RGB));
! 	*pred = rgb.red;
! 	*pgreen = rgb.green;
! 	*pblue = rgb.blue;
  	return (1);
      }
      return(0);