[Mesa-dev] [PATCH 7/8] mesa: add extra null checks in vbo_rebase_prims()

Brian Paul brianp at vmware.com
Wed Feb 26 07:25:36 PST 2014


On 02/25/2014 07:41 AM, Juha-Pekka Heikkila wrote:
> Signed-off-by: Juha-Pekka Heikkila <juhapekka.heikkila at gmail.com>
> ---
>   src/mesa/vbo/vbo_rebase.c | 28 +++++++++++++++++++++++++---
>   1 file changed, 25 insertions(+), 3 deletions(-)
>
> diff --git a/src/mesa/vbo/vbo_rebase.c b/src/mesa/vbo/vbo_rebase.c
> index c700621..dd754e2 100644
> --- a/src/mesa/vbo/vbo_rebase.c
> +++ b/src/mesa/vbo/vbo_rebase.c
> @@ -60,10 +60,16 @@ static void *rebase_##TYPE( const void *ptr,			\
>   {								\
>      const TYPE *in = (TYPE *)ptr;				\
>      TYPE *tmp_indices = malloc(count * sizeof(TYPE));	\
> -   GLuint i;							\
> +   if (tmp_indices != NULL) {                                  \
> +      GLuint i;	    					\
>   								\
> -   for (i = 0; i < count; i++)  				\
> -      tmp_indices[i] = in[i] - min_index;			\
> +      for (i = 0; i < count; i++)  				\
> +         tmp_indices[i] = in[i] - min_index;			\
> +   }                                                           \
> +   else {                                                      \
> +      GET_CURRENT_CONTEXT(ctx);                                \
> +      _mesa_error(ctx, GL_OUT_OF_MEMORY, "out of memory");     \
> +   }                                                           \
>   								\
>      return (void *)tmp_indices;					\
>   }
> @@ -148,6 +154,12 @@ void vbo_rebase_prims( struct gl_context *ctx,
>          */
>         tmp_prims = malloc(sizeof(*prim) * nr_prims);
>
> +      if (tmp_prims == NULL) {
> +         GET_CURRENT_CONTEXT(ctx);
> +         _mesa_error(ctx, GL_OUT_OF_MEMORY, "out of memory");
> +         return;
> +      }
> +
>         for (i = 0; i < nr_prims; i++) {
>   	 tmp_prims[i] = prim[i];
>   	 tmp_prims[i].basevertex -= min_index;
> @@ -185,6 +197,10 @@ void vbo_rebase_prims( struct gl_context *ctx,
>         if (map_ib)
>   	 ctx->Driver.UnmapBuffer(ctx, ib->obj);
>
> +      if (tmp_indices == NULL) {
> +         return;
> +      }
> +
>         tmp_ib.obj = ctx->Shared->NullBufferObj;
>         tmp_ib.ptr = tmp_indices;
>         tmp_ib.count = ib->count;
> @@ -197,6 +213,12 @@ void vbo_rebase_prims( struct gl_context *ctx,
>          */
>         tmp_prims = malloc(sizeof(*prim) * nr_prims);
>
> +      if (tmp_prims == NULL) {
> +          GET_CURRENT_CONTEXT(ctx);
> +          _mesa_error(ctx, GL_OUT_OF_MEMORY, "out of memory");
> +         return;
> +      }

inconsistent indentation again.


> +
>         for (i = 0; i < nr_prims; i++) {
>   	 /* If this fails, it could indicate an application error:
>   	  */
>

Otherwise, the series looks OK to me.

Reviewed-by: Brian Paul <brianp at vmware.com>



More information about the mesa-dev mailing list