Add text of argument to errors for atoi(), atol(), atof().
diff --git a/Modules/stropmodule.c b/Modules/stropmodule.c
index 0540a9d..a70df8c 100644
--- a/Modules/stropmodule.c
+++ b/Modules/stropmodule.c
@@ -526,6 +526,7 @@
 	char *s, *end;
 	int base = 10;
 	long x;
+	char buffer[256]; /* For errors */
 
 	if (args != NULL && is_tupleobject(args)) {
 		if (!getargs(args, "(si)", &s, &base))
@@ -537,6 +538,8 @@
 	}
 	else if (!getargs(args, "s", &s))
 		return NULL;
+	while (*s && isspace(Py_CHARMASK(*s)))
+		s++;
 	if (s[0] == '\0') {
 		err_setstr(ValueError, "empty string for atoi()");
 		return NULL;
@@ -546,12 +549,16 @@
 		x = (long) mystrtoul(s, &end, base);
 	else
 		x = mystrtol(s, &end, base);
+	while (*end && isspace(Py_CHARMASK(*end)))
+		end++;
 	if (*end != '\0') {
-		err_setstr(ValueError, "invalid literal for atoi()");
+		sprintf(buffer, "invalid literal for atoi(): %.200s", s);
+		err_setstr(ValueError, buffer);
 		return NULL;
 	}
 	else if (errno != 0) {
-		err_setstr(OverflowError, "atoi() literal too large");
+		sprintf(buffer, "atoi() literal too large: %.200s", s);
+		err_setstr(ValueError, buffer);
 		return NULL;
 	}
 	return newintobject(x);
@@ -566,6 +573,7 @@
 	char *s, *end;
 	int base = 10;
 	object *x;
+	char buffer[256]; /* For errors */
 
 	if (args != NULL && is_tupleobject(args)) {
 		if (!getargs(args, "(si)", &s, &base))
@@ -577,6 +585,8 @@
 	}
 	else if (!getargs(args, "s", &s))
 		return NULL;
+	while (*s && isspace(Py_CHARMASK(*s)))
+		s++;
 	if (s[0] == '\0') {
 		err_setstr(ValueError, "empty string for atol()");
 		return NULL;
@@ -586,8 +596,11 @@
 		return NULL;
 	if (base == 0 && (*end == 'l' || *end == 'L'))
 		end++;
+	while (*end && isspace(Py_CHARMASK(*end)))
+		end++;
 	if (*end != '\0') {
-		err_setstr(ValueError, "invalid literal for atol()");
+		sprintf(buffer, "invalid literal for atol(): %.200s", s);
+		err_setstr(ValueError, buffer);
 		DECREF(x);
 		return NULL;
 	}
@@ -603,21 +616,28 @@
 	extern double strtod PROTO((const char *, char **));
 	char *s, *end;
 	double x;
+	char buffer[256]; /* For errors */
 
 	if (!getargs(args, "s", &s))
 		return NULL;
+	while (*s && isspace(Py_CHARMASK(*s)))
+		s++;
 	if (s[0] == '\0') {
 		err_setstr(ValueError, "empty string for atof()");
 		return NULL;
 	}
 	errno = 0;
 	x = strtod(s, &end);
+	while (*end && isspace(Py_CHARMASK(*end)))
+		end++;
 	if (*end != '\0') {
-		err_setstr(ValueError, "invalid literal for atof()");
+		sprintf(buffer, "invalid literal for atof(): %.200s", s);
+		err_setstr(ValueError, buffer);
 		return NULL;
 	}
 	else if (errno != 0) {
-		err_setstr(OverflowError, "atof() literal too large");
+		sprintf(buffer, "atof() literal too large: %.200s", s);
+		err_setstr(ValueError, buffer);
 		return NULL;
 	}
 	return newfloatobject(x);