Patch #650653: Raise always value error if the table is not 256 bytes long.
diff --git a/Lib/test/string_tests.py b/Lib/test/string_tests.py
index 3eb8785..b64917b 100644
--- a/Lib/test/string_tests.py
+++ b/Lib/test/string_tests.py
@@ -192,6 +192,8 @@
     table = string.maketrans('a', 'A')
     test('translate', 'abc', 'Abc', table)
     test('translate', 'xyz', 'xyz', table)
+    test('translate', 'xyz', ValueError, 'too short', 'strip')
+    test('translate', 'xyz', ValueError, 'too short')
 
     test('replace', 'one!two!three!', 'one@two!three!', '!', '@', 1)
     test('replace', 'one!two!three!', 'onetwothree', '!', '')
diff --git a/Objects/stringobject.c b/Objects/stringobject.c
index 3a69aa9..7937b46 100644
--- a/Objects/stringobject.c
+++ b/Objects/stringobject.c
@@ -2070,6 +2070,12 @@
 	else if (PyObject_AsCharBuffer(tableobj, &table1, &tablen))
 		return NULL;
 
+	if (tablen != 256) {
+		PyErr_SetString(PyExc_ValueError,
+		  "translation table must be 256 characters long");
+		return NULL;
+	}
+
 	if (delobj != NULL) {
 		if (PyString_Check(delobj)) {
 			del_table = PyString_AS_STRING(delobj);
@@ -2084,12 +2090,6 @@
 #endif
 		else if (PyObject_AsCharBuffer(delobj, &del_table, &dellen))
 			return NULL;
-
-		if (tablen != 256) {
-			PyErr_SetString(PyExc_ValueError,
-			  "translation table must be 256 characters long");
-			return NULL;
-		}
 	}
 	else {
 		del_table = NULL;