gh-159739: Handle module filename encoding errors (#159749)

Propagate UTF-8 conversion errors before copying the module filename.

Co-authored-by: Jelle Zijlstra <jelle.zijlstra@gmail.com>
diff --git a/Misc/NEWS.d/next/Core_and_Builtins/2026-10-19-19-33-35.gh-issue-159739.09590b.rst b/Misc/NEWS.d/next/Core_and_Builtins/2026-10-19-19-33-35.gh-issue-159739.09590b.rst
new file mode 100644
index 0000000..3231be4
--- /dev/null
+++ b/Misc/NEWS.d/next/Core_and_Builtins/2026-10-19-19-33-35.gh-issue-159739.09590b.rst
@@ -0,0 +1 @@
+Avoid a crash when a module filename cannot be encoded as UTF-8.
diff --git a/Objects/moduleobject.c b/Objects/moduleobject.c
index 7a5d14c..7c842f3 100644
--- a/Objects/moduleobject.c
+++ b/Objects/moduleobject.c
@@ -992,6 +992,10 @@ _PyModule_GetFilenameUTF8(PyObject *mod, char *buffer, Py_ssize_t maxlen)
     }
     else {
         const char *filename = PyUnicode_AsUTF8AndSize(filenameobj, &size);
+        if (filename == NULL) {
+            Py_DECREF(filenameobj);
+            return -1;
+        }
         assert(size >= 0);
         if (size > maxlen) {
             size = -1;