vlc | branch: master | Francois Cartegnie <[email protected]> | Fri Feb 19 
15:47:36 2016 +0100| [ee7e7136f7976de49d0ea2f944b1ee2a24b49051] | committer: 
Francois Cartegnie

meta_reader: fix taglib leak on static method

> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=ee7e7136f7976de49d0ea2f944b1ee2a24b49051
---

 modules/meta_engine/taglib.cpp |   15 ++++++++++++---
 1 file changed, 12 insertions(+), 3 deletions(-)

diff --git a/modules/meta_engine/taglib.cpp b/modules/meta_engine/taglib.cpp
index b6df4f9..4a1a15b 100644
--- a/modules/meta_engine/taglib.cpp
+++ b/modules/meta_engine/taglib.cpp
@@ -129,6 +129,12 @@ File *VLCTagLib::ExtResolver<T>::createFile(FileName 
fileName, bool, AudioProper
     return 0;
 }
 
+#if TAGLIB_VERSION >= TAGLIB_SYNCDECODE_FIXED_VERSION
+static VLCTagLib::ExtResolver<MPEG::File> aacresolver(".aac");
+#endif
+static VLCTagLib::ExtResolver<MP4::File> m4vresolver(".m4v");
+static bool b_extensions_registered = false;
+
 // taglib is not thread safe
 static vlc_mutex_t taglib_lock = VLC_STATIC_MUTEX;
 
@@ -718,11 +724,14 @@ static int ReadMeta( vlc_object_t* p_this)
     if( psz_path == NULL )
         return VLC_EGENERIC;
 
+    if( !b_extensions_registered )
+    {
 #if TAGLIB_VERSION >= TAGLIB_SYNCDECODE_FIXED_VERSION
-    FileRef::addFileTypeResolver( new 
VLCTagLib::ExtResolver<MPEG::File>(".aac") );
+        FileRef::addFileTypeResolver( &aacresolver );
 #endif
-
-    FileRef::addFileTypeResolver( new 
VLCTagLib::ExtResolver<MP4::File>(".m4v") );
+        FileRef::addFileTypeResolver( &m4vresolver );
+        b_extensions_registered = true;
+    }
 
 #if defined(_WIN32)
     wchar_t *wpath = ToWide( psz_path );

_______________________________________________
vlc-commits mailing list
[email protected]
https://mailman.videolan.org/listinfo/vlc-commits

Reply via email to