#3302: fix segfaults when passing None for arguments that can't
be NULL for the C functions.
diff --git a/Modules/_localemodule.c b/Modules/_localemodule.c
index 09e04ef..09c025f 100644
--- a/Modules/_localemodule.c
+++ b/Modules/_localemodule.c
@@ -586,7 +586,7 @@
 PyIntl_gettext(PyObject* self, PyObject *args)
 {
 	char *in;
-	if (!PyArg_ParseTuple(args, "z", &in))
+	if (!PyArg_ParseTuple(args, "s", &in))
 		return 0;
 	return PyString_FromString(gettext(in));
 }
@@ -599,7 +599,7 @@
 PyIntl_dgettext(PyObject* self, PyObject *args)
 {
 	char *domain, *in;
-	if (!PyArg_ParseTuple(args, "zz", &domain, &in))
+	if (!PyArg_ParseTuple(args, "zs", &domain, &in))
 		return 0;
 	return PyString_FromString(dgettext(domain, in));
 }
@@ -613,7 +613,7 @@
 {
 	char *domain, *msgid;
 	int category;
-	if (!PyArg_ParseTuple(args, "zzi", &domain, &msgid, &category))
+	if (!PyArg_ParseTuple(args, "zsi", &domain, &msgid, &category))
 		return 0;
 	return PyString_FromString(dcgettext(domain,msgid,category));
 }
@@ -643,9 +643,13 @@
 static PyObject*
 PyIntl_bindtextdomain(PyObject* self,PyObject*args)
 {
-	char *domain,*dirname;
-	if (!PyArg_ParseTuple(args, "zz", &domain, &dirname))
+	char *domain, *dirname;
+	if (!PyArg_ParseTuple(args, "sz", &domain, &dirname))
 		return 0;
+	if (!strlen(domain)) {
+		PyErr_SetString(Error, "domain must be a non-empty string");
+		return 0;
+	}
 	dirname = bindtextdomain(domain, dirname);
 	if (!dirname) {
 		PyErr_SetFromErrno(PyExc_OSError);