* Modules/stropmodule.c: implement find/rfind instead of
	index/rindex (raising and catching an exception is much more
	expensive than returning and testing -1)
diff --git a/Modules/stropmodule.c b/Modules/stropmodule.c
index 0fd09b0..68df4de 100644
--- a/Modules/stropmodule.c
+++ b/Modules/stropmodule.c
@@ -196,7 +196,7 @@
 
 
 static object *
-strop_index(self, args)
+strop_find(self, args)
 	object *self; /* Not used */
 	object *args;
 {
@@ -227,13 +227,12 @@
 		    (n == 1 || strncmp(&s[i+1], &sub[1], n-1) == 0))
 			return newintobject((long)i);
 
-	err_setstr(ValueError, "substring not found");
-	return NULL;
+	return newintobject(-1L);
 }
 
 
 static object *
-strop_rindex(self, args)
+strop_rfind(self, args)
 	object *self; /* Not used */
 	object *args;
 {
@@ -263,8 +262,7 @@
 		    (n == 1 || strncmp(&s[j+1], &sub[1], n-1) == 0))
 			return newintobject((long)j);
 
-	err_setstr(ValueError, "substring not found");
-	return NULL;
+	return newintobject(-1L);
 }
 
 
@@ -512,10 +510,10 @@
 	{"atof",	strop_atof},
 	{"atoi",	strop_atoi},
 	{"atol",	strop_atol},
-	{"index",	strop_index},
+	{"find",	strop_find},
 	{"joinfields",	strop_joinfields},
 	{"lower",	strop_lower},
-	{"rindex",	strop_rindex},
+	{"rfind",	strop_rfind},
 	{"split",	strop_split},
 	{"splitfields",	strop_splitfields},
 	{"strip",	strop_strip},