Fix:Core:Don't crash when wordexp returns an error
authormartin-s <martin-s@ffa7fe5e-494d-0410-b361-a75ebd5db220>
Mon, 19 May 2008 17:49:40 +0000 (17:49 +0000)
committermartin-s <martin-s@ffa7fe5e-494d-0410-b361-a75ebd5db220>
Mon, 19 May 2008 17:49:40 +0000 (17:49 +0000)
git-svn-id: https://navit.svn.sourceforge.net/svnroot/navit/trunk@1064 ffa7fe5e-494d-0410-b361-a75ebd5db220

navit/navit/file.c

index 9fadf45..db157d7 100644 (file)
@@ -275,14 +275,18 @@ file_destroy(struct file *f)
 }
 
 struct file_wordexp {
+       int err;
        wordexp_t we;
 };
 
 struct file_wordexp *
 file_wordexp_new(const char *pattern)
 {
-       struct file_wordexp *ret=g_new(struct file_wordexp, 1);
-       wordexp(pattern, &ret->we, 0);
+       struct file_wordexp *ret=g_new0(struct file_wordexp, 1);
+
+       ret->err=wordexp(pattern, &ret->we, 0);
+       if (ret->err)
+               dbg(0,"wordexp('%s') returned %d\n", pattern, ret->err);
        return ret;
 }
 
@@ -301,7 +305,8 @@ file_wordexp_get_array(struct file_wordexp *wexp)
 void
 file_wordexp_destroy(struct file_wordexp *wexp)
 {
-       wordfree(&wexp->we);
+       if (! wexp->err)
+               wordfree(&wexp->we);
        g_free(wexp);
 }