diff --git a/src/xpdev/str_list.c b/src/xpdev/str_list.c
index d199e915bbd90e2f4f55e2acb041f9fdb36ef31f..ceb832ca000a8c0c3e51d8cf1c810a1e07667be7 100644
--- a/src/xpdev/str_list.c
+++ b/src/xpdev/str_list.c
@@ -272,11 +272,9 @@ str_list_t strListSplitCopy(str_list_t* list, const char* str, const char* delim
 	if(str==NULL)
 		return(NULL);
 
-	if((buf=(char*)malloc(strlen(str)+1))==NULL)
+	if((buf=strdup(str))==NULL)
 		return(NULL);
 
-	strcpy(buf,str);
-
 	*list=strListSplit(list,buf,delimit);
 
 	free(buf);
@@ -347,7 +345,7 @@ void strListFree(str_list_t* list)
 {
 	if(*list!=NULL) {
 		strListFreeStrings(*list);
-		free(*list);
+		FREE_AND_NULL(*list);
 	}
 }