On Sun, Nov 23, 2014 at 5:40 PM, David Heidelberg <da...@ixit.cz> wrote: > From: Axel Davy <axel.d...@ens.fr> > > It is an sint_4, but it was stored in a uint_8... > The code using it was acting as if it was signed. > > Problem found thanks to Coverity > > Cc: "10.4" <mesa-sta...@lists.freedesktop.org> > Tested-by: David Heidelberg <da...@ixit.cz> > Signed-off-by: Axel Davy <axel.d...@ens.fr>
Reviewed-by: Ilia Mirkin <imir...@alum.mit.edu> > --- > src/gallium/state_trackers/nine/nine_shader.c | 6 ++++-- > 1 file changed, 4 insertions(+), 2 deletions(-) > > diff --git a/src/gallium/state_trackers/nine/nine_shader.c > b/src/gallium/state_trackers/nine/nine_shader.c > index cc027b4..7d5622b 100644 > --- a/src/gallium/state_trackers/nine/nine_shader.c > +++ b/src/gallium/state_trackers/nine/nine_shader.c > @@ -239,7 +239,7 @@ struct sm1_dst_param > BYTE file; > BYTE mask; > BYTE mod; > - BYTE shift; /* sint4 */ > + int8_t shift; /* sint4 */ > BYTE type; > }; > > @@ -2535,6 +2535,7 @@ sm1_parse_get_param(struct shader_translator *tx, DWORD > *reg, DWORD *rel) > static void > sm1_parse_dst_param(struct sm1_dst_param *dst, DWORD tok) > { > + uint8_t shift; > dst->file = > (tok & D3DSP_REGTYPE_MASK) >> D3DSP_REGTYPE_SHIFT | > (tok & D3DSP_REGTYPE_MASK2) >> D3DSP_REGTYPE_SHIFT2; > @@ -2543,7 +2544,8 @@ sm1_parse_dst_param(struct sm1_dst_param *dst, DWORD > tok) > dst->rel = NULL; > dst->mask = (tok & NINED3DSP_WRITEMASK_MASK) >> > NINED3DSP_WRITEMASK_SHIFT; > dst->mod = (tok & D3DSP_DSTMOD_MASK) >> D3DSP_DSTMOD_SHIFT; > - dst->shift = (tok & D3DSP_DSTSHIFT_MASK) >> D3DSP_DSTSHIFT_SHIFT; > + shift = (tok & D3DSP_DSTSHIFT_MASK) >> D3DSP_DSTSHIFT_SHIFT; > + dst->shift = (shift & 0x8) ? -(shift & 0x7) : shift & 0x7; > } > > static void > -- > 2.1.3 > > _______________________________________________ > mesa-dev mailing list > mesa-dev@lists.freedesktop.org > http://lists.freedesktop.org/mailman/listinfo/mesa-dev _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev