[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