summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--mailbox/mbox/folder.c13
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;
}

Return to:

Send suggestions and report system problems to the System administrator.