Bug #1704793: Raise KeyError if unicodedata.lookup cannot
represent the result in a single character.
diff --git a/Modules/unicodedata.c b/Modules/unicodedata.c
index a30d30c..1a32b64 100644
--- a/Modules/unicodedata.c
+++ b/Modules/unicodedata.c
@@ -1102,8 +1102,18 @@
         return NULL;
     }
 
+#ifndef Py_UNICODE_WIDE
+    if (code >= 0x10000) {
+        /* Raise KeyError for compatibility; the possibly more
+           correct ValueError was not documented as a possible
+           exception for 2.5.x and earlier. */
+        PyErr_Format(PyExc_KeyError, "result %d larger than sys.maxunicode",
+                     code);
+        return NULL;
+    }
+#endif
     str[0] = (Py_UNICODE) code;
-    return PyUnicode_FromUnicode(str, 1);
+    return PyUnicode_FromUnicode(str, 1);    
 }
 
 /* XXX Add doc strings. */