[Mesa-dev] [PATCH] mesa: Fix return type of _mesa_get_format_bytes() (#37351)
Jose Fonseca
jfonseca at vmware.com
Fri May 20 17:50:26 PDT 2011
----- Original Message -----
> -----BEGIN PGP SIGNED MESSAGE-----
> Hash: SHA1
>
> On 05/19/2011 08:14 PM, Adam Jackson wrote:
> > Despite that negative values aren't sensible here, making this
> > unsigned
> > is dangerous. Consider get_pointer_generic, which computes a value
> > of
> > the form:
> >
> > void *base + (int x * int stride + int y) * unsigned bpp
> >
> > The usual arithmetic conversions will coerce the (x*stride + y)
> > subexpression to unsigned. Since stride can be negative, this is
> > disastrous.
> >
> > Fixes at least the following piglit tests on Ironlake:
> >
> > fbo/fbo-blit-d24s8
> > spec/ARB_depth_texture/fbo-clear-formats
> > spec/EXT_packed_depth_stencil/fbo-clear-formats
> >
> > Signed-off-by: Adam Jackson <ajax at redhat.com>
>
> I don't care which approach we go with. This will likely fix it
> everywhere, but I'd like there to be a comment explaining why the
> return
> type must not be unsigned. Otherwise someone will come along in the
> future and make it unsigned in the name of "code cleanup."
I agree with Ian: Adam's patch is good, but a comment would be useful, as the implicit coercion to unsigned is both unfortunate and unintuitive.
Jose
More information about the mesa-dev
mailing list