[Mesa-dev] [PATCH 06/11] glsl: Check realloc return value in ir_function::matching_signature()

Anuj Phogat anuj.phogat at gmail.com
Tue Sep 9 14:59:42 PDT 2014


On Mon, Sep 8, 2014 at 11:53 PM, Juha-Pekka Heikkila
<juhapekka.heikkila at gmail.com> wrote:
> Signed-off-by: Juha-Pekka Heikkila <juhapekka.heikkila at gmail.com>
> ---
>  src/glsl/ir_function.cpp | 11 +++++++++--
>  1 file changed, 9 insertions(+), 2 deletions(-)
>
> diff --git a/src/glsl/ir_function.cpp b/src/glsl/ir_function.cpp
> index 98bec45..2b2643c 100644
> --- a/src/glsl/ir_function.cpp
> +++ b/src/glsl/ir_function.cpp
> @@ -24,6 +24,7 @@
>  #include "glsl_types.h"
>  #include "ir.h"
>  #include "glsl_parser_extras.h"
> +#include "main/errors.h"
>
>  typedef enum {
>     PARAMETER_LIST_NO_MATCH,
> @@ -296,6 +297,7 @@ ir_function::matching_signature(_mesa_glsl_parse_state *state,
>                                  bool *is_exact)
>  {
>     ir_function_signature **inexact_matches = NULL;
> +   ir_function_signature **inexact_matches_temp;
>     ir_function_signature *match = NULL;
>     int num_inexact_matches = 0;
>
> @@ -321,11 +323,16 @@ ir_function::matching_signature(_mesa_glsl_parse_state *state,
>           free(inexact_matches);
>           return sig;
>        case PARAMETER_LIST_INEXACT_MATCH:
> -         inexact_matches = (ir_function_signature **)
> +         inexact_matches_temp = (ir_function_signature **)
>                 realloc(inexact_matches,
>                         sizeof(*inexact_matches) *
>                         (num_inexact_matches + 1));
> -         assert(inexact_matches);
> +         if (inexact_matches_temp == NULL) {
> +            _mesa_error_no_memory(__func__);
> +            free(inexact_matches);
This free is not required. inexact_matches is null.
> +            return NULL;
> +         }
> +         inexact_matches = inexact_matches_temp;
>           inexact_matches[num_inexact_matches++] = sig;
>           continue;
>        case PARAMETER_LIST_NO_MATCH:
> --
> 1.8.5.1
>
> _______________________________________________
> mesa-dev mailing list
> mesa-dev at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/mesa-dev


More information about the mesa-dev mailing list