[Mesa-dev] [PATCH] auxiliary: fix util_framebuffer_copy

Keith Whitwell keithw at vmware.com
Wed Aug 11 06:28:22 PDT 2010


On Wed, 2010-08-11 at 04:47 -0700, Luca Barbieri wrote:
> util_framebuffer_copy was attempting to copy all elements of the
> source framebuffer state.
> 
> However, this breaks if the user does not zero initialize the structure.
> Instead, only copy the elements up to nr_cbufs, and clear elements up
> to dst->nr_cbufs, if the destination was larger than the source.
> ---
>  src/gallium/auxiliary/util/u_framebuffer.c |    6 ++++--
>  1 files changed, 4 insertions(+), 2 deletions(-)
> 
> diff --git a/src/gallium/auxiliary/util/u_framebuffer.c b/src/gallium/auxiliary/util/u_framebuffer.c
> index 768ae9c..7803ec6 100644
> --- a/src/gallium/auxiliary/util/u_framebuffer.c
> +++ b/src/gallium/auxiliary/util/u_framebuffer.c
> @@ -85,9 +85,11 @@ util_copy_framebuffer_state(struct pipe_framebuffer_state *dst,
>     dst->width = src->width;
>     dst->height = src->height;
>  
> -   for (i = 0; i < Elements(src->cbufs); i++) {
> +   for (i = 0; i < src->nr_cbufs; i++)
>        pipe_surface_reference(&dst->cbufs[i], src->cbufs[i]);
> -   }
> +
> +   for (i = src->nr_cbufs; i < dst->nr_cbufs; i++)
> +      pipe_surface_reference(&dst->cbufs[i], NULL);
>  
>     dst->nr_cbufs = src->nr_cbufs;
>  

This looks good to me Luca.

Keith



More information about the mesa-dev mailing list