diff --git a/src/logic/slbt_exec_link.c b/src/logic/slbt_exec_link.c
index 0e31524..3c82e46 100644
--- a/src/logic/slbt_exec_link.c
+++ b/src/logic/slbt_exec_link.c
@@ -56,7 +56,11 @@
 /*                                                                 */
 /*******************************************************************/
 
-static bool slbt_adjust_input_argument(char * arg, bool fpic)
+static bool slbt_adjust_input_argument(
+	char *		arg,
+	const char *	osuffix,
+	const char *	asuffix,
+	bool		fpic)
 {
 	char *	slash;
 	char *	dot;
@@ -68,7 +72,7 @@ static bool slbt_adjust_input_argument(char * arg, bool fpic)
 	if (!(dot = strrchr(arg,'.')))
 		return false;
 
-	if (strcmp(dot,".lo"))
+	if (strcmp(dot,osuffix))
 		return false;
 
 	if (fpic) {
@@ -85,8 +89,7 @@ static bool slbt_adjust_input_argument(char * arg, bool fpic)
 		dot = strrchr(arg,'.');
 	}
 
-	dot[1] = 'o';
-	dot[2] = '\0';
+	strcpy(dot,asuffix);
 	return true;
 }
 
@@ -280,7 +283,7 @@ static int slbt_exec_link_create_archive(
 
 	/* input argument adjustment */
 	for (parg=ectx->cargv; *parg; parg++)
-		if (slbt_adjust_input_argument(*parg,fpic))
+		if (slbt_adjust_input_argument(*parg,".lo",".o",fpic))
 			*aarg++ = *parg;
 
 	*aarg = 0;
@@ -339,7 +342,7 @@ static int slbt_exec_link_create_library(
 
 	/* input argument adjustment */
 	for (parg=ectx->cargv; *parg; parg++)
-		slbt_adjust_input_argument(*parg,true);
+		slbt_adjust_input_argument(*parg,".lo",".o",true);
 
 	/* linker argument adjustment */
 	for (parg=ectx->cargv; *parg; parg++)
@@ -430,7 +433,7 @@ static int slbt_exec_link_create_executable(
 
 	/* input argument adjustment */
 	for (parg=ectx->cargv; *parg; parg++)
-		slbt_adjust_input_argument(*parg,true);
+		slbt_adjust_input_argument(*parg,".lo",".o",true);
 
 	/* linker argument adjustment */
 	for (parg=ectx->cargv; *parg; parg++)