--- a/src/c/error.d
+++ b/src/c/error.d
@@ -468,6 +468,13 @@
 		 @':operands', cl_list(2, x, y));
 }
 
+cl_object
+_ecl_strerror(int code)
+{
+	const char *error = strerror(code);
+	return make_base_string_copy(error);
+}
+
 /*************************************
  * Errors generated by the C library *
  *************************************/
@@ -480,14 +487,14 @@
 FElibc_error(const char *msg, int narg, ...)
 {
 	ecl_va_list args;
-	cl_object rest;
-        const char *error = strerror(errno);
+	cl_object rest, error = _ecl_strerror(errno);
 
 	ecl_va_start(args, narg, narg, 0);
 	rest = cl_grab_rest_args(args);
 
-	FEerror("~?~%C library explanation: ~A.", 3, make_constant_base_string(msg), rest,
-		make_constant_base_string(error));
+	FEerror("~?~%C library explanation: ~A.", 3,
+		make_constant_base_string(msg), rest,
+		error);
 }
 
 #if defined(ECL_MS_WINDOWS_HOST) || defined(cygwin)