From: Alex M. <al...@us...> - 2003-08-08 09:49:00
|
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)); |