Declare ticker as int; made testbool generic for all numeric types
diff --git a/Python/ceval.c b/Python/ceval.c
index 99570e9..82410d5 100644
--- a/Python/ceval.c
+++ b/Python/ceval.c
@@ -162,7 +162,7 @@
 	lineno = -1;
 	
 	for (;;) {
-		static ticker;
+		static int ticker;
 		
 		/* Do periodic things */
 		
@@ -983,16 +983,14 @@
 testbool(v)
 	object *v;
 {
-	if (is_intobject(v))
-		return getintvalue(v) != 0;
-	if (is_floatobject(v))
-		return getfloatvalue(v) != 0.0;
+	if (v == None)
+		return 0;
+	if (v->ob_type->tp_as_number != NULL)
+		return (*v->ob_type->tp_as_number->nb_nonzero)(v);
 	if (v->ob_type->tp_as_sequence != NULL)
 		return (*v->ob_type->tp_as_sequence->sq_length)(v) != 0;
 	if (v->ob_type->tp_as_mapping != NULL)
 		return (*v->ob_type->tp_as_mapping->mp_length)(v) != 0;
-	if (v == None)
-		return 0;
 	/* All other objects are 'true' */
 	return 1;
 }