Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 8 Oct 2008 08:30:12 GMT
From:      "Dorr H. Clark" <dclark@engr.scu.edu>
To:        freebsd-x11@FreeBSD.org
Subject:   Re: ports/122924: XCreateImage fails in most recent x11/XOrg
Message-ID:  <200810080830.m988UC6l029863@freefall.freebsd.org>

next in thread | raw e-mail | index | archive | help
The following reply was made to PR ports/122924; it has been noted by GNATS.

From: "Dorr H. Clark" <dclark@engr.scu.edu>
To: bug-followup@FreeBSD.org
Cc: freebsd-x11@FreeBSD.org, freebsd-bugs@FreeBSD.org,
        "Mikhail T." <mi@aldan.algebra.com>
Subject: Re: ports/122924: XCreateImage fails in most recent x11/XOrg
Date: Wed, 8 Oct 2008 01:04:45 -0700 (PDT)

 Bug Number 122924: XcreateImage fails in most recent x11/XOrg
 
 This is actually not a bug in FreeBSD, in fact during the investigation
 of this bug we were able to reproduce it on Linux (although at a higher
 level).
 
 To resolve a bug in XOrg file, we need to have the source files for XOrgalong 
 with the mandatory external dependencies.  Code changes have been made in file 
 ImUtil.c in directory /usr/ports/distfiles/xorg/lib/libX11-1.1.3/src
 and at the bottom of this writeup is an explanation of how to retrieve
 the software needed for investigating this bug.
 
 The function XCreateImage takes image_bytes_per_line as one of the inputs. 
 This parameter determines the value for Number of bytes between a pixel 
 on one line and the pixel with the same X coordinate on the next line.
 In case the calling function sets this parameter to 0, XCreateImage 
 calculates the minimum value for image_bytes_per_line depending upon 
 the format of image and the required depth.
 Thus, if the input value for image_bytes_per_line is zero or less than 
 the minimum value, it is set equal to the minimum value.
 
 Here is the patch:
 
 --- ImUtil_org.c	2008-08-21 12:46:15.000000000 +0000
 +++ ImUtil.c	2008-08-21 12:47:37.000000000 +0000
 @@ -372,10 +372,8 @@
  	    min_bytes_per_line =
  	        ROUNDUP((width + offset), image->bitmap_pad);
  	}
 -	if (image_bytes_per_line == 0 ) {
 +	if (image_bytes_per_line == 0 ||image_bytes_per_line < min_bytes_per_line  ) {
  	    image->bytes_per_line = min_bytes_per_line;
 -	} else if (image_bytes_per_line < min_bytes_per_line) {
 -		return 0;
  	} 
  	else {
  	    image->bytes_per_line = image_bytes_per_line;
 
 
 Shikha Bansal , engineer
 Dorr H. Clark, advisor
 Graduate School of Engineering
 Santa Clara University,
 Santa Clara CA
 
 http://www.cse.scu.edu/~dclark/coen_284_FreeBSD/122924.txt
 
 1) GET THE XORG SOURCES 
 	a)	cd /usr/ports/x11/xorg
 	b)	make (you must be connected to internet)
    This copies the source files into /usr/ports/distfiles
 
 2) GET THE EXTERNAL DEPENDENCIES
 	a)	go to xcb.freedesktop.org/dist/
 	b)	Download libxcb-0.9.93.tar.gz and xcb-proto-0.9.93.tar.gz in directory /usr/ports/distfiles/xorg/lib
 	c)	cd xcb-proto-0.9.93 
 	d)	make
 	e)	cp *.pc /usr/local/libdata/pkgconfig
 	f)	make install
 	g)	similarly install libxcb-0.9.93
 
 3)  INSTALL XORG AS A PORT
 	a)	cd /usr/ports/distfiles/xorg/lib/libX11-1.1.3/include
 	b)	mkdir xcb
 	c)	copy the following 4 headers from libxcb-0.9.93 to xcb folder created in previous step:
 	xcb.h,xproto.h,xcbext.h,xcblib.h
 	d)	make install
 
  
 
 
 
 



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200810080830.m988UC6l029863>