Issue #15765: Fix quirky NetBSD getcwd() behaviour.

This is done by extending a previous fix for issue #9185 that was made for
Solaris and OpenBSD to NetBSD as well.
diff --git a/Lib/test/test_posix.py b/Lib/test/test_posix.py
index 755a81c..2eba770 100644
--- a/Lib/test/test_posix.py
+++ b/Lib/test/test_posix.py
@@ -405,8 +405,16 @@
                             _create_and_do_getcwd(dirname, current_path_length + len(dirname) + 1)
                     except OSError as e:
                         expected_errno = errno.ENAMETOOLONG
-                        if 'sunos' in sys.platform or 'openbsd' in sys.platform:
-                            expected_errno = errno.ERANGE # Issue 9185
+                        # The following platforms have quirky getcwd()
+                        # behaviour -- see issue 9185 and 15765 for
+                        # more information.
+                        quirky_platform = (
+                            'sunos' in sys.platform or
+                            'netbsd' in sys.platform or
+                            'openbsd' in sys.platform
+                        )
+                        if quirky_platform:
+                            expected_errno = errno.ERANGE
                         self.assertEqual(e.errno, expected_errno)
                     finally:
                         os.chdir('..')
diff --git a/Misc/NEWS b/Misc/NEWS
index 54c260c..1b7f80f 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -346,6 +346,9 @@
 Tests
 -----
 
+- Issue #15765: Extend a previous fix to Solaris and OpenBSD for quirky
+  getcwd() behaviour (issue #9185) to NetBSD as well.
+
 - Issue #15615: Add some tests for the json module's handling of invalid
   input data.  Patch by Kushal Das.
 
diff --git a/Modules/posixmodule.c b/Modules/posixmodule.c
index 1bd5c1a..ea810ec 100644
--- a/Modules/posixmodule.c
+++ b/Modules/posixmodule.c
@@ -1956,7 +1956,9 @@
 "getcwd() -> path\n\n\
 Return a string representing the current working directory.");
 
-#if (defined(__sun) && defined(__SVR4)) || defined(__OpenBSD__)
+#if (defined(__sun) && defined(__SVR4)) || \
+     defined(__OpenBSD__)               || \
+     defined(__NetBSD__)
 /* Issue 9185: getcwd() returns NULL/ERANGE indefinitely. */
 static PyObject *
 posix_getcwd(PyObject *self, PyObject *noargs)