diff --git a/sflphone-client-gnome/src/contacts/addrbookfactory.c b/sflphone-client-gnome/src/contacts/addrbookfactory.c
index 6f6feead298a9d9e67e9cb68f438e77475661253..cd3e9a8af6b0b383ce1cfc709ef4639fb06cfcac 100644
--- a/sflphone-client-gnome/src/contacts/addrbookfactory.c
+++ b/sflphone-client-gnome/src/contacts/addrbookfactory.c
@@ -65,14 +65,14 @@ void abookfactory_load_module(AddrBookFactory *factory) {
 
     DEBUG("AddressbookFactory: Loading addressbook: %s", pluginpath);
 
-    ab = g_malloc(sizeof(AddrBookHandle));
-
     handle = dlopen(pluginpath, RTLD_LAZY);
+    g_free(pluginpath);
     if(handle == NULL) {
         ERROR("AddressbookFactory: Error: Could not load addressbook");
         return;
     }
-    g_free(pluginpath);
+
+    ab = g_malloc(sizeof(AddrBookHandle));
 
     ab->init = dlsym(handle, "addressbook_init");
     if(ab->init == NULL) {