diff options
author | Eric Wong <normalperson@yhbt.net> | 2006-08-14 13:46:51 +0000 |
---|---|---|
committer | Eric Wong <normalperson@yhbt.net> | 2006-08-14 13:46:51 +0000 |
commit | 6459b3ee29e13d5141b9e7b40bb4abce68c404be (patch) | |
tree | 647c70e2896da491a1b96db0dd7f7c9ddb87b4d2 /src/playlist.c | |
parent | 4fe965c3044888bafa6c86e40724c20faa16f972 (diff) | |
download | mpd-6459b3ee29e13d5141b9e7b40bb4abce68c404be.tar.gz mpd-6459b3ee29e13d5141b9e7b40bb4abce68c404be.tar.xz mpd-6459b3ee29e13d5141b9e7b40bb4abce68c404be.zip |
Revert leaks from r4311, and also the leak fixes as a result of that
utf8ToFsCharset() and fsCharsetToUtf8() got very broken in r4311, and
resulted in several commits to fix those leaks. Unfortunately, not all
of those newly introduced leaks were fixed, nor was the result pretty.
Also, fixed a double-free in lsPlaylists(). This is very hard
to trigger (and therefore exploit) at the moment because we
check printDirectoryInfo() beforehand.
Intended behavior for utf8ToFsCharset() and fsCharsetToUtf8() as
God^H^H^Hshank originally intended is now documented in path.h
to prevent future errors like this.
mpd could still use some good valgrind testing before the 0.12.0
release.
<plug>In addition to reducing heap fragmentation, malloc
reductions from mpd-ke greatly reduces the chance of leaks from
happening due to programming errors.</plug>
git-svn-id: https://svn.musicpd.org/mpd/trunk@4639 09075e82-0dd4-0310-85a5-a0d7c8717e4f
Diffstat (limited to '')
-rw-r--r-- | src/playlist.c | 14 |
1 files changed, 2 insertions, 12 deletions
diff --git a/src/playlist.c b/src/playlist.c index 359e3ac24..80c50f5b5 100644 --- a/src/playlist.c +++ b/src/playlist.c @@ -1272,8 +1272,6 @@ int deletePlaylist(int fd, char *utf8file) strcat(rfile, "."); strcat(rfile, PLAYLIST_FILE_SUFFIX); - free(file); - if ((actualFile = rpp2app(rfile)) && isPlaylist(actualFile)) free(rfile); else { @@ -1300,7 +1298,6 @@ int savePlaylist(int fd, char *utf8file) char *file; char *rfile; char *actualFile; - char *url; if (strstr(utf8file, "/")) { commandError(fd, ACK_ERROR_ARG, @@ -1318,8 +1315,6 @@ int savePlaylist(int fd, char *utf8file) strcat(rfile, "."); strcat(rfile, PLAYLIST_FILE_SUFFIX); - free(file); - actualFile = rpp2app(rfile); free(rfile); @@ -1343,10 +1338,8 @@ int savePlaylist(int fd, char *utf8file) rmp2amp(utf8ToFsCharset ((getSongUrl(playlist.songs[i]))))); } else { - url = utf8ToFsCharset(getSongUrl(playlist.songs[i])); - fprintf(fileP, "%s\n", url); - free(url); - + fprintf(fileP, "%s\n", + utf8ToFsCharset(getSongUrl(playlist.songs[i]))); } } @@ -1441,8 +1434,6 @@ static int PlaylistIterFunc(int fd, char *utf8file, strcat(rfile, "."); strcat(rfile, PLAYLIST_FILE_SUFFIX); - free(temp); - if ((actualFile = rpp2app(rfile)) && isPlaylist(actualFile)) free(rfile); else { @@ -1499,7 +1490,6 @@ static int PlaylistIterFunc(int fd, char *utf8file, strcpy(s, temp); IterFunc(fd, s, &erroredFile); } - free(temp); } else if (slength == MAXPATHLEN) { s[slength] = '\0'; commandError(fd, ACK_ERROR_PLAYLIST_LOAD, |