On Fri, Apr 8, 2011 at 10:04 PM, Alan Coopersmith
<alan.coopersm...@oracle.com> wrote:
> Signed-off-by: Alan Coopersmith <alan.coopersm...@oracle.com>

Obvious question to this is was the string returned from
GET_PROGRAM_NAME freed in the past?

Cheers Jakob.

> ---
>  src/mesa/drivers/dri/common/xmlconfig.c |   20 +++++++++++++++++++-
>  1 files changed, 19 insertions(+), 1 deletions(-)
>
> diff --git a/src/mesa/drivers/dri/common/xmlconfig.c 
> b/src/mesa/drivers/dri/common/xmlconfig.c
> index 0312c07..0226b38 100644
> --- a/src/mesa/drivers/dri/common/xmlconfig.c
> +++ b/src/mesa/drivers/dri/common/xmlconfig.c
> @@ -64,7 +64,25 @@ extern char *program_invocation_name, 
> *program_invocation_short_name;
>    the basename to match BSD getprogname() */
>  #    include <stdlib.h>
>  #    include <libgen.h>
> -#    define GET_PROGRAM_NAME() basename(getexecname())
> +
> +static const char *__getProgramName () {
> +    static const char *progname;
> +
> +    if (progname == NULL) {
> +       const char *e = getexecname();
> +       if (e != NULL) {
> +           /* Have to make a copy since getexecname can return a readonly
> +              string, but basename expects to be able to modify its arg. */
> +           char *n = strdup(e);
> +           if (n != NULL) {
> +               progname = basename(n);
> +           }
> +       }
> +    }
> +    return progname;
> +}
> +
> +#    define GET_PROGRAM_NAME() __getProgramName()
>  #endif
>
>  #if !defined(GET_PROGRAM_NAME)
> --
> 1.7.3.2
>
> _______________________________________________
> mesa-dev mailing list
> mesa-dev@lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/mesa-dev
>
_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to