[PATCH xf86-video-intel 2/7] sna: Don't memcpy() between different types

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



From: Ville Syrjälä <ville.syrjala@xxxxxxxxxxxxxxx>

Currently we're doing a blind memcpy() from a DDXPointRec
into the beginning of a BoxRec. While this apparently works
it's quite dodgy. Get rid of the memcpy() and simply assign
each member by hand.

Signed-off-by: Ville Syrjälä <ville.syrjala@xxxxxxxxxxxxxxx>
---
 src/sna/fb/fbspan.c | 22 +++++++++++++---------
 1 file changed, 13 insertions(+), 9 deletions(-)

diff --git a/src/sna/fb/fbspan.c b/src/sna/fb/fbspan.c
index 18136c200458..0700d8811efe 100644
--- a/src/sna/fb/fbspan.c
+++ b/src/sna/fb/fbspan.c
@@ -37,14 +37,16 @@ fbFillSpans(DrawablePtr drawable, GCPtr gc,
 {
 	DBG(("%s x %d\n", __FUNCTION__, n));
 	while (n--) {
-		BoxRec box;
-
-		memcpy(&box, pt, sizeof(box));
-		box.x2 = box.x1 + *width++;
-		box.y2 = box.y1 + 1;
+		BoxRec box = {
+			.x1 = pt->x,
+			.y1 = pt->y,
+			.x2 = pt->x + *width,
+			.y2 = pt->y + 1,
+		};
 
 		/* XXX fSorted */
 		fbDrawableRun(drawable, gc, &box, fbFillSpan, NULL);
+		width++;
 		pt++;
 	}
 }
@@ -90,12 +92,14 @@ fbSetSpans(DrawablePtr drawable, GCPtr gc,
 
 	data.src = src;
 	while (n--) {
-		BoxRec box;
+		BoxRec box = {
+			.x1 = pt->x,
+			.y1 = pt->y,
+			.x2 = pt->x + *width,
+			.y2 = pt->y + 1,
+		};
 
-		memcpy(&box, pt, sizeof(box));
 		data.pt = *pt;
-		box.x2 = box.x1 + *width;
-		box.y2 = box.y1 + 1;
 
 		fbDrawableRun(drawable, gc, &box, fbSetSpan, &data);
 
-- 
2.45.3




[Index of Archives]     [AMD Graphics]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux