Skip to content

Commit 817adc2

Browse files
committed
libvisual/lv_color.c: Fix visual_color_to_uint32 with regard to strict aliasing
1 parent 5c1e5f2 commit 817adc2

File tree

1 file changed

+8
-5
lines changed

1 file changed

+8
-5
lines changed

libvisual/libvisual/lv_color.c

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -270,15 +270,18 @@ uint32_t visual_color_to_uint32 (VisColor *color)
270270

271271
uint16_t visual_color_to_uint16 (VisColor *color)
272272
{
273-
_color16 colors;
273+
union {
274+
_color16 channels;
275+
uint16_t raw;
276+
} colors;
274277

275278
visual_log_return_val_if_fail (color != NULL, 0);
276279

277-
colors.r = color->r >> 2;
278-
colors.g = color->g >> 3;
279-
colors.b = color->b >> 2;
280+
colors.channels.r = color->r >> 2;
281+
colors.channels.g = color->g >> 3;
282+
colors.channels.b = color->b >> 2;
280283

281-
return *((uint16_t *) &colors);
284+
return colors.raw;
282285
}
283286

284287
VisColor *visual_color_black ()

0 commit comments

Comments
 (0)