Do for hasattr() what was done for getattr()

Namely, an exception is raised if the second arg to hasattr() is not a
string or Unicode.
diff --git a/Python/bltinmodule.c b/Python/bltinmodule.c
index 571cfe2..ec55928 100644
--- a/Python/bltinmodule.c
+++ b/Python/bltinmodule.c
@@ -944,6 +944,17 @@
 
 	if (!PyArg_ParseTuple(args, "OO:hasattr", &v, &name))
 		return NULL;
+	if (PyUnicode_Check(name)) {
+		name = _PyUnicode_AsDefaultEncodedString(name, NULL);
+		if (name == NULL)
+			return NULL;
+	}
+
+	if (!PyString_Check(name)) {
+		PyErr_SetString(PyExc_TypeError,
+				"attribute name must be string");
+		return NULL;
+	}
 	v = PyObject_GetAttr(v, name);
 	if (v == NULL) {
 		PyErr_Clear();