diff --git a/Python/pathconfig.c b/Python/pathconfig.c
index aacc5f5..3a43143 100644
--- a/Python/pathconfig.c
+++ b/Python/pathconfig.c
@@ -278,8 +278,8 @@
 }
 
 /* Compute argv[0] which will be prepended to sys.argv */
-PyObject*
-_PyPathConfig_ComputeArgv0(int argc, wchar_t **argv)
+int
+_PyPathConfig_ComputeArgv0(int argc, wchar_t **argv, PyObject **argv0_p)
 {
     wchar_t *argv0;
     wchar_t *p = NULL;
@@ -297,6 +297,8 @@
     wchar_t fullpath[MAX_PATH];
 #endif
 
+    assert(*argv0_p == NULL);
+
     argv0 = argv[0];
     if (argc > 0 && argv0 != NULL) {
         have_module_arg = (wcscmp(argv0, L"-m") == 0);
@@ -305,7 +307,9 @@
 
     if (have_module_arg) {
         #if defined(HAVE_REALPATH) || defined(MS_WINDOWS)
-            _Py_wgetcwd(fullpath, Py_ARRAY_LENGTH(fullpath));
+            if (!_Py_wgetcwd(fullpath, Py_ARRAY_LENGTH(fullpath))) {
+                return 0;
+            }
             argv0 = fullpath;
             n = wcslen(argv0);
         #else
@@ -384,7 +388,8 @@
     }
 #endif /* All others */
 
-    return PyUnicode_FromWideChar(argv0, n);
+    *argv0_p = PyUnicode_FromWideChar(argv0, n);
+    return 1;
 }
 
 
diff --git a/Python/sysmodule.c b/Python/sysmodule.c
index cdc2edf..c01a04e 100644
--- a/Python/sysmodule.c
+++ b/Python/sysmodule.c
@@ -2615,7 +2615,10 @@
     if (updatepath) {
         /* If argv[0] is not '-c' nor '-m', prepend argv[0] to sys.path.
            If argv[0] is a symlink, use the real path. */
-        PyObject *argv0 = _PyPathConfig_ComputeArgv0(argc, argv);
+        PyObject *argv0 = NULL;
+        if (!_PyPathConfig_ComputeArgv0(argc, argv, &argv0)) {
+            return;
+        }
         if (argv0 == NULL) {
             Py_FatalError("can't compute path0 from argv");
         }
