Use a faster way to check for null bytes in the string argument for
int(), long(), float().
diff --git a/Python/bltinmodule.c b/Python/bltinmodule.c
index 3460f1a..87005f5 100644
--- a/Python/bltinmodule.c
+++ b/Python/bltinmodule.c
@@ -2095,8 +2095,7 @@
 	long x;
 	char buffer[256]; /* For errors */
 
-	if (!PyArg_Parse(v, "s", &s))
-		return NULL;
+	s = PyString_AS_STRING(v);
 	while (*s && isspace(Py_CHARMASK(*s)))
 		s++;
 	if (s[0] == '\0') {
@@ -2112,6 +2111,11 @@
 		PyErr_SetString(PyExc_ValueError, buffer);
 		return NULL;
 	}
+	else if (end-s != PyString_GET_SIZE(v)) {
+		PyErr_SetString(PyExc_ValueError,
+				"null byte in argument for int()");
+		return NULL;
+	}
 	else if (errno != 0) {
 		sprintf(buffer, "int() literal too large: %.200s", s);
 		PyErr_SetString(PyExc_ValueError, buffer);
@@ -2128,9 +2132,7 @@
 	PyObject *x;
 	char buffer[256]; /* For errors */
 
-	if (!PyArg_Parse(v, "s", &s))
-		return NULL;
-
+	s = PyString_AS_STRING(v);
 	while (*s && isspace(Py_CHARMASK(*s)))
 		s++;
 	if (s[0] == '\0') {
@@ -2148,6 +2150,11 @@
 		Py_DECREF(x);
 		return NULL;
 	}
+	else if (end-s != PyString_GET_SIZE(v)) {
+		PyErr_SetString(PyExc_ValueError,
+				"null byte in argument for float()");
+		return NULL;
+	}
 	return x;
 }
 
@@ -2160,8 +2167,7 @@
 	double x;
 	char buffer[256]; /* For errors */
 
-	if (!PyArg_Parse(v, "s", &s))
-		return NULL;
+	s = PyString_AS_STRING(v);
 	while (*s && isspace(Py_CHARMASK(*s)))
 		s++;
 	if (s[0] == '\0') {
@@ -2179,6 +2185,11 @@
 		PyErr_SetString(PyExc_ValueError, buffer);
 		return NULL;
 	}
+	else if (end-s != PyString_GET_SIZE(v)) {
+		PyErr_SetString(PyExc_ValueError,
+				"null byte in argument for float()");
+		return NULL;
+	}
 	else if (errno != 0) {
 		sprintf(buffer, "float() literal too large: %.200s", s);
 		PyErr_SetString(PyExc_ValueError, buffer);