[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:18:09 PDT 2011
On Fri, Apr 8, 2011 at 10:12 PM, Jakob Bornecrantz <wallbraker at gmail.com> wrote:
> 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?
Bah, read the code again while we only leak one string its still a
leak and valgrind will complain (libraries that have these type of
leaks is a pet peeve of mine). But making it not leak will be
ridiculous, bah humbug. Other then that I see no problems with the
patch, while you don't have my ACK/RB I'm not NACK:ing it either.
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