[Mesa-dev] [PATCH] Fix GET_PROGRAM_NAME() on Solaris to not try to modify a read-only string
Jakob Bornecrantz
wallbraker at gmail.com
Fri Apr 8 13:12:44 PDT 2011
On Fri, Apr 8, 2011 at 10:04 PM, Alan Coopersmith
<alan.coopersmith at oracle.com> wrote:
> Signed-off-by: Alan Coopersmith <alan.coopersmith at 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 at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/mesa-dev
>
More information about the mesa-dev
mailing list