Reviewed-by: Alan Coopersmith <[email protected]>
for both patches.

        -alan-

On 09/23/15 11:54 AM, Thomas Klausner wrote:
Ah, good catch. I've attached a cleanup patch for that.
  Thomas


On Wed, Sep 23, 2015 at 11:38:02AM -0700, Jasper St. Pierre wrote:
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 <[email protected]> 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 <[email protected]> wrote:
From: Christos Zoulas <[email protected]>

Signed-off-by: Thomas Klausner <[email protected]>
---
  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

_______________________________________________
[email protected]: X.Org development
Archives: http://lists.x.org/archives/xorg-devel
Info: http://lists.x.org/mailman/listinfo/xorg-devel



--
   Jasper




--
   Jasper



_______________________________________________
[email protected]: X.Org development
Archives: http://lists.x.org/archives/xorg-devel
Info: http://lists.x.org/mailman/listinfo/xorg-devel


--
        -Alan Coopersmith-              [email protected]
         Oracle Solaris Engineering - http://blogs.oracle.com/alanc
_______________________________________________
[email protected]: X.Org development
Archives: http://lists.x.org/archives/xorg-devel
Info: http://lists.x.org/mailman/listinfo/xorg-devel

Reply via email to