diff --git a/modules/text_renderer/freetype/freetype.c b/modules/text_renderer/freetype/freetype.c
index a5f34547c3909fac96d7eb6e2d8f9e44ba4d3cc8..36fa044f7389c1b5a01eebe5a023ef02348f615e 100644
--- a/modules/text_renderer/freetype/freetype.c
+++ b/modules/text_renderer/freetype/freetype.c
@@ -1465,6 +1465,12 @@ static void Destroy( vlc_object_t *p_this )
         DumpFamilies( p_sys->fs );
 #endif
 
+    if( p_sys->ftcache )
+        vlc_ftcache_Delete( p_sys->ftcache );
+
+    if( p_sys->fs )
+        FontSelectDelete( p_sys->fs );
+
     free( p_sys->psz_fontfile );
     free( p_sys->psz_monofontfile );
 
@@ -1481,16 +1487,10 @@ static void Destroy( vlc_object_t *p_this )
         free( p_sys->pp_font_attachments );
     }
 
-    if(p_sys->fs)
-        FontSelectDelete( p_sys->fs );
-
     /* Freetype */
     if( p_sys->p_stroker )
         FT_Stroker_Done( p_sys->p_stroker );
 
-    if( p_sys->ftcache )
-        vlc_ftcache_Delete( p_sys->ftcache );
-
     FT_Done_FreeType( p_sys->p_library );
 
     free( p_sys );