diff --git a/libavcodec/faad.c b/libavcodec/faad.c
index 80e5e0bf6c695214f675bdb98a8eab099b0bbe59..01cbd40e7c0d9ddab6507433ab31bdb8a10a6835 100644
--- a/libavcodec/faad.c
+++ b/libavcodec/faad.c
@@ -196,8 +196,7 @@ static int faac_decode_end(AVCodecContext *avctx)
 {
     FAACContext *s = (FAACContext *) avctx->priv_data;
 
-    if (s->faacDecClose)
-        s->faacDecClose(s->faac_handle);
+    s->faacDecClose(s->faac_handle);
 
     dlclose(s->handle);
     return 0;
@@ -228,6 +227,7 @@ static int faac_decode_init(AVCodecContext *avctx)
 
         // resolve all needed function calls
         dfaac(Open, (faacDecHandle FAADAPI (*)(void)));
+        dfaac(Close, (void FAADAPI (*)(faacDecHandle hDecoder)));
         dfaac(GetCurrentConfiguration, (faacDecConfigurationPtr
                                         FAADAPI (*)(faacDecHandle)));
 #ifndef FAAD2_VERSION
@@ -239,7 +239,6 @@ static int faac_decode_init(AVCodecContext *avctx)
     dfaac(Init2, (int FAADAPI (*)(faacDecHandle, unsigned char*,
                                        unsigned long, unsigned long*,
                                        unsigned long*)));
-    dfaac(Close, (void FAADAPI (*)(faacDecHandle hDecoder)));
         dfaac(Decode, (int FAADAPI (*)(faacDecHandle, unsigned char*,
                              unsigned long*, short*, unsigned long*)));
 #else