Commits

Guido van Rossum  committed f08d7f3

Include mymath.h instead of declaring prototypes for math functions.
Fix leak and unchecked error in complex().

  • Participants
  • Parent commits bfd9baf
  • Branches legacy-trunk

Comments (0)

Files changed (1)

File Python/bltinmodule.c

 #include "compile.h"
 #include "eval.h"
 
+#include "mymath.h"
+
 /* Forward */
 static object *filterstring PROTO((object *, object *));
 static object *filtertuple  PROTO((object *, object *));
 	object *self;
 	object *args;
 {
-	object *r, *i;
+	object *r, *i, *tmp;
 	number_methods *nbr, *nbi;
 	Py_complex cr, ci;
 
 	if (is_complexobject(r))
 		cr = ((complexobject*)r)->cval;
 	else {
-		cr.real = getfloatvalue((*nbr->nb_float)(r));
+		tmp = (*nbr->nb_float)(r);
+		if (tmp == NULL)
+			return NULL;
+		cr.real = getfloatvalue(tmp);
+		DECREF(tmp);
 		cr.imag = 0.;
 	}
 	if (i == NULL) {
 	else if (is_complexobject(i))
 		ci = ((complexobject*)i)->cval;
 	else {
-		ci.real = getfloatvalue((*nbi->nb_float)(i));
+		tmp = (*nbr->nb_float)(r);
+		if (tmp == NULL)
+			return NULL;
+		ci.real = getfloatvalue(tmp);
+		DECREF(tmp);
 		ci.imag = 0.;
 	}
 	cr.real -= ci.imag;
 	object *self;
 	object *args;
 {
-	extern double floor PROTO((double));
-	extern double ceil PROTO((double));
 	double x;
 	double f;
 	int ndigits = 0;