Use FT_Done_MM_Var if available
diff --git a/configure.ac b/configure.ac
index e80479e..391071c 100644
--- a/configure.ac
+++ b/configure.ac
@@ -320,7 +320,7 @@
 fontconfig_save_cflags="$CFLAGS"
 LIBS="$LIBS $FREETYPE_LIBS"
 CFLAGS="$CFLAGS $FREETYPE_CFLAGS"
-AC_CHECK_FUNCS(FT_Get_BDF_Property FT_Get_PS_Font_Info FT_Has_PS_Glyph_Names FT_Get_X11_Font_Format)
+AC_CHECK_FUNCS(FT_Get_BDF_Property FT_Get_PS_Font_Info FT_Has_PS_Glyph_Names FT_Get_X11_Font_Format FT_Done_MM_Var)
 
 AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
 	#include <ft2build.h>
diff --git a/src/fcfreetype.c b/src/fcfreetype.c
index 22d651d..4d076b7 100644
--- a/src/fcfreetype.c
+++ b/src/fcfreetype.c
@@ -2170,7 +2170,11 @@
     } while (!err && (!index_set || face_num == set_face_num) && face_num < num_faces);
 
 bail:
+#ifdef HAVE_FT_DONE_MM_VAR
+    FT_Done_MM_Var (ftLibrary, mm_var);
+#else
     free (mm_var);
+#endif
     FcLangSetDestroy (ls);
     FcCharSetDestroy (cs);
     if (face)