vlc | branch: master | Rémi Denis-Courmont <r...@remlab.net> | Tue Nov 18 23:19:59 2014 +0200| [0fd329fd790e1ac2f423c72e0cb280aece24af97] | committer: Rémi Denis-Courmont
archive: memory leak > http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=0fd329fd790e1ac2f423c72e0cb280aece24af97 --- modules/access/archive/access.c | 30 ++++++++++++++++-------------- 1 file changed, 16 insertions(+), 14 deletions(-) diff --git a/modules/access/archive/access.c b/modules/access/archive/access.c index c241c09..64c2445 100644 --- a/modules/access/archive/access.c +++ b/modules/access/archive/access.c @@ -93,30 +93,32 @@ static int FindVolumes(access_t *p_access, struct archive *p_archive, const char uint16_t i_min; uint16_t i_max; } patterns[] = { - { ".part1.rar", ".part%.1d.rar", 2, 9 }, - { ".part01.rar", ".part%.2d.rar", 2, 99 }, - { ".part001.rar", ".part%.3d.rar", 2, 999 }, - { ".001", ".%.3d", 2, 999 }, - { ".000", ".%.3d", 1, 999 }, + { ".part1.rar", "%.*s.part%.1d.rar", 2, 9 }, + { ".part01.rar", "%.*s.part%.2d.rar", 2, 99 }, + { ".part001.rar", "%.*s.part%.3d.rar", 2, 999 }, + { ".001", "%.*s.%.3d", 2, 999 }, + { ".000", "%.*s.%.3d", 1, 999 }, }; - const size_t i_uri_size = strlen(psz_uri); - const int i_patterns = ARRAY_SIZE(patterns); - for (int i=0; i<i_patterns; i++) + const int i_uri_size = strlen(psz_uri); + const size_t i_patterns = ARRAY_SIZE(patterns); + + for (size_t i = 0; i < i_patterns; i++) { - const size_t i_match_size = strlen(patterns[i].psz_match); + const int i_match_size = strlen(patterns[i].psz_match); if (i_uri_size < i_match_size) continue; if (!strcmp(&psz_uri[i_uri_size - i_match_size], patterns[i].psz_match)) { - char **ppsz_files = malloc(sizeof(char *) * patterns[i].i_max); + char **ppsz_files = xmalloc(sizeof(char *) * patterns[i].i_max); - for(int j=patterns[i].i_min; j<patterns[i].i_max; j++) + for (unsigned j = patterns[i].i_min; j < patterns[i].i_max; j++) { - char *psz_newuri = strdup(psz_uri); - if (!psz_newuri || - !sprintf(&psz_newuri[i_uri_size - i_match_size], patterns[i].psz_format, j)) + char *psz_newuri; + + if (asprintf(&psz_newuri, patterns[i].psz_format, + i_uri_size - i_match_size, psz_uri, j) == -1) break; /* Probe URI */ _______________________________________________ vlc-commits mailing list vlc-commits@videolan.org https://mailman.videolan.org/listinfo/vlc-commits