summaryrefslogtreecommitdiffstats
path: root/src/track.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/track.c')
-rw-r--r--src/track.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/src/track.c b/src/track.c
index e6f35cf..68486ad 100644
--- a/src/track.c
+++ b/src/track.c
@@ -11,6 +11,7 @@ track_init(const char *dir, const char *fname)
{
struct track *track;
struct stat info;
+ int len;
track = malloc(sizeof(struct track));
ASSERT(track != NULL);
@@ -21,9 +22,11 @@ track_init(const char *dir, const char *fname)
track->fpath = aprintf("%s/%s", dir, fname);
ASSERT(track->fpath != NULL);
- track->name = calloc(strlen(track->fname) + 1, sizeof(wchar_t));
+ len = mbstowcs(NULL, track->fname, 0);
+ ASSERT(len >= 0);
+ track->name = calloc(len + 1, sizeof(wchar_t));
ASSERT(track->name != NULL);
- mbstowcs(track->name, track->fname, strlen(track->fname) + 1);
+ mbstowcs(track->name, track->fname, len + 1);
track->fid = -1;
if (!stat(track->fpath, &info))