diff --git a/daemon/src/audio/codecs/audiocodecfactory.cpp b/daemon/src/audio/codecs/audiocodecfactory.cpp
index c9bd656879bbc71368049420b9d431b2052dc650..fc1319db585ab73f2ece4d113a8a83dc05a4f9d7 100644
--- a/daemon/src/audio/codecs/audiocodecfactory.cpp
+++ b/daemon/src/audio/codecs/audiocodecfactory.cpp
@@ -229,6 +229,8 @@ AudioCodecFactory::loadCodec(const std::string &path)
     sfl::AudioCodec *a = static_cast<sfl::AudioCodec *>(createCodec());
     if (a)
         codecInMemory_.push_back(AudioCodecHandlePointer(a, codecHandle));
+    else
+        dlclose(codecHandle);
 
     return a;
 }