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