diff options
-rw-r--r-- | mailbox/mbox/folder.c | 13 |
1 files changed, 10 insertions, 3 deletions
diff --git a/mailbox/mbox/folder.c b/mailbox/mbox/folder.c index 158f593ae..af13519a6 100644 --- a/mailbox/mbox/folder.c +++ b/mailbox/mbox/folder.c @@ -446,10 +446,17 @@ get_pathname (const char *dirname, const char *basename) /* Relative. */ else { - size_t len = strlen (basename); - pathname = calloc (strlen (dirname) + len + 2, sizeof (char)); + size_t baselen = strlen (basename); + size_t dirlen = strlen (dirname); + while (dirlen > 0 && dirname[dirlen-1] == '/') + dirlen--; + pathname = calloc (dirname + baselen + 2, sizeof (char)); if (pathname) - sprintf (pathname, "%s/%s", dirname, basename); + { + memcpy (pathname, dirname, dirlen); + pathname[dirlen] = '/'; + strcpy (pathname + dirlen + 1, basename); + } } return pathname; } |