----- 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 <a...@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
_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to