Update of /cvsroot/gmpy/gmpy/src
In directory sc8-pr-cvs1:/tmp/cvs-serv23341/src
Modified Files:
gmpy.c
Log Message:
better diagnosis of some cases of wrong # of arguments being passed.
Index: gmpy.c
===================================================================
RCS file: /cvsroot/gmpy/gmpy/src/gmpy.c,v
retrieving revision 1.6
retrieving revision 1.7
diff -C2 -d -r1.6 -r1.7
*** gmpy.c 8 Aug 2003 08:57:05 -0000 1.6
--- gmpy.c 8 Aug 2003 09:48:57 -0000 1.7
***************
*** 104,107 ****
--- 104,109 ----
* 1.0:
* minor cleanups, ensure support for Python 2.3
+ * fixed misdiagnosis of some argument couns in macro
+ * SELF_ONE_ARG_CONVERTED (tx to Paul Rubin!)
*
*/
***************
*** 313,320 ****
#define SELF_ONE_ARG_CONVERTED(nm, converter, var) \
if(self) { \
! if(args && !PyArg_ParseTuple(args, "|O&", converter, var)) \
return last_try_self(nm, 1, 1, args, self); \
Py_INCREF(self); \
} else { \
if(!PyArg_ParseTuple(args, "O&|O&", converter,&self, converter,var)) \
return last_try(nm, 1, 2, args); \
--- 315,331 ----
#define SELF_ONE_ARG_CONVERTED(nm, converter, var) \
if(self) { \
! if(args && !PyArg_ParseTuple(args, "O&", converter, var)) \
return last_try_self(nm, 1, 1, args, self); \
Py_INCREF(self); \
} else { \
+ if(!PyArg_ParseTuple(args, "O&O&", converter,&self, converter,var)) \
+ return last_try(nm, 2, 2, args); \
+ }
+ #define SELF_ONE_ARG_CONVERTED_OPT(nm, converter, var) \
+ if(self) { \
+ if(args && !PyArg_ParseTuple(args, "|O&", converter, var)) \
+ return last_try_self(nm, 0, 1, args, self); \
+ Py_INCREF(self); \
+ } else { \
if(!PyArg_ParseTuple(args, "O&|O&", converter,&self, converter,var)) \
return last_try(nm, 1, 2, args); \
***************
*** 2918,2922 ****
fprintf(stderr, "Pympf_f2q: %p, %p\n", self, args);
! SELF_ONE_ARG_CONVERTED("f2q", Pympf_convert_arg,&err);
assert(Pympf_Check(self));
fself = (PympfObject*)self;
--- 2929,2933 ----
fprintf(stderr, "Pympf_f2q: %p, %p\n", self, args);
! SELF_ONE_ARG_CONVERTED_OPT("f2q", Pympf_convert_arg, &err);
assert(Pympf_Check(self));
fself = (PympfObject*)self;
***************
*** 4607,4611 ****
int multiplicity;
! SELF_ONE_ARG_CONVERTED("remove",Pympz_convert_arg, &factor);
assert(Pympz_Check(self));
assert(Pympz_Check(factor));
--- 4618,4622 ----
int multiplicity;
! SELF_ONE_ARG_CONVERTED("remove", Pympz_convert_arg, &factor);
assert(Pympz_Check(self));
assert(Pympz_Check(factor));
***************
*** 4816,4820 ****
PyObject* res;
! SELF_ONE_ARG_CONVERTED("jacobi", Pympz_convert_arg,&other);
assert(Pympz_Check(self));
assert(Pympz_Check(other));
--- 4827,4831 ----
PyObject* res;
! SELF_ONE_ARG_CONVERTED("jacobi", Pympz_convert_arg, &other);
assert(Pympz_Check(self));
assert(Pympz_Check(other));
***************
*** 4848,4852 ****
PyObject* res;
! SELF_ONE_ARG_CONVERTED("legendre", Pympz_convert_arg,&other);
assert(Pympz_Check(self));
assert(Pympz_Check(other));
--- 4859,4863 ----
PyObject* res;
! SELF_ONE_ARG_CONVERTED("legendre", Pympz_convert_arg, &other);
assert(Pympz_Check(self));
assert(Pympz_Check(other));
***************
*** 4882,4886 ****
int ires;
! SELF_ONE_ARG_CONVERTED("kronecker", Pympz_convert_arg,&other);
assert(Pympz_Check(self));
assert(Pympz_Check(other));
--- 4893,4897 ----
int ires;
! SELF_ONE_ARG_CONVERTED("kronecker", Pympz_convert_arg, &other);
assert(Pympz_Check(self));
assert(Pympz_Check(other));
***************
*** 4993,4997 ****
PyObject *res;
! SELF_ONE_ARG_CONVERTED("reldiff", Pympf_convert_arg,&op);
assert(Pympf_Check(self));
--- 5004,5008 ----
PyObject *res;
! SELF_ONE_ARG_CONVERTED("reldiff", Pympf_convert_arg, &op);
assert(Pympf_Check(self));
|