[PATCH:twm] Add some const.

Jasper St. Pierre jstpierre at mecheye.net
Wed Sep 23 11:38:02 PDT 2015


I was imagining that it might be used like:

    char *foo = ExpandFilename(name);
    ...
    if (foo != name)
        free(foo);

... which would still work, but the != is now dead code. If callers
were unconditionally freeing before, I heavily suspect something more
serious here.

On Wed, Sep 23, 2015 at 9:30 AM, Thomas Klausner <wiz at netbsd.org> wrote:
> Well, yes, but for context, here is the full function after the change:
>
> char *
> ExpandFilename(const char *name)
> {
>     char *newname;
>
>     if (name[0] != '~') return strdup(name);
>
>     newname = malloc (HomeLen + strlen(name) + 2);
>     if (!newname) {
>         fprintf (stderr,
>                  "%s:  unable to allocate %ld bytes to expand filename %s/%s\n",
>                  ProgramName, HomeLen + (unsigned long)strlen(name) + 2,
>                  Home, &name[1]);
>     } else {
>         (void) sprintf (newname, "%s/%s", Home, &name[1]);
>     }
>
>     return newname;
> }
>
> So in other words, now the function is consistent in returning a
> malloc()ed string when it succeeds.
>  Thomas
>
> On Wed, Sep 23, 2015 at 08:59:22AM -0700, Jasper St. Pierre wrote:
>> Should also mention that it also adds a strdup -- I feel that the code
>> calling this might conditionally free. Would be nice to double-check
>> callers.
>>
>> On Wed, Sep 23, 2015 at 1:58 AM, Thomas Klausner <wiz at netbsd.org> wrote:
>> > From: Christos Zoulas <christos at NetBSD.org>
>> >
>> > Signed-off-by: Thomas Klausner <wiz at NetBSD.org>
>> > ---
>> >  src/util.c | 4 ++--
>> >  src/util.h | 2 +-
>> >  2 files changed, 3 insertions(+), 3 deletions(-)
>> >
>> > diff --git a/src/util.c b/src/util.c
>> > index 4b94051..5e8f0db 100644
>> > --- a/src/util.c
>> > +++ b/src/util.c
>> > @@ -256,11 +256,11 @@ Zoom(Window wf, Window wt)
>> >   *  \param name  the filename to expand
>> >   */
>> >  char *
>> > -ExpandFilename(char *name)
>> > +ExpandFilename(const char *name)
>> >  {
>> >      char *newname;
>> >
>> > -    if (name[0] != '~') return name;
>> > +    if (name[0] != '~') return strdup(name);
>> >
>> >      newname = malloc (HomeLen + strlen(name) + 2);
>> >      if (!newname) {
>> > diff --git a/src/util.h b/src/util.h
>> > index 7f4527c..4b2d3a8 100644
>> > --- a/src/util.h
>> > +++ b/src/util.h
>> > @@ -64,7 +64,7 @@ in this Software without prior written authorization from The Open Group.
>> >  extern void MoveOutline ( Window root, int x, int y, int width, int height,
>> >                           int bw, int th );
>> >  extern void Zoom ( Window wf, Window wt );
>> > -extern char * ExpandFilename ( char *name );
>> > +extern char * ExpandFilename ( const char *name );
>> >  extern void GetUnknownIcon ( const char *name );
>> >  extern Pixmap FindBitmap ( const char *name, unsigned int *widthp,
>> >                            unsigned int *heightp );
>> > --
>> > 2.5.2
>> >
>> > _______________________________________________
>> > xorg-devel at lists.x.org: X.Org development
>> > Archives: http://lists.x.org/archives/xorg-devel
>> > Info: http://lists.x.org/mailman/listinfo/xorg-devel
>>
>>
>>
>> --
>>   Jasper
>>



-- 
  Jasper


More information about the xorg-devel mailing list