diff --git a/src/port/win32env.c b/src/port/win32env.c
index a2595a8..e5c0f0d 100644
--- a/src/port/win32env.c
+++ b/src/port/win32env.c
@@ -40,15 +40,20 @@ pgwin32_putenv(const char *envval)
 	if (putenvFunc == NULL)
 	{
 		hmodule = GetModuleHandle("msvcrt");
-		if (hmodule == NULL)
-			return 1;
-		putenvFunc = (PUTENVPROC) GetProcAddress(hmodule, "_putenv");
-		if (putenvFunc == NULL)
-			return 1;
+		if (hmodule != NULL)
+		{
+			/*
+			 * If the module is found, attempt to find the function. If not, that just
+			 * means we're not linked with msvcrt, so fall through and make our other
+			 * modifications anyway.
+			 * Ignore any errors and update whatever we can, since callers don't
+			 * check the return value anyway.
+			 */
+			putenvFunc = (PUTENVPROC) GetProcAddress(hmodule, "_putenv");
+			if (putenvFunc != NULL)
+				putenvFunc(envval);
+		}
 	}
-	ret = putenvFunc(envval);
-	if (ret != 0)
-		return ret;
 #endif   /* _MSC_VER >= 1300 */
 
 
