David Abrahams wrote:
Nikolay Mladenov <nickm@sitius.com> writes:
Diffs to the cvs from before couple of days:
Hi Nikolay,
In future, please post patches as unified diffs (you can use cvs diff -wu).
This patch appears to have some significant bogus code in it, especially in function.cpp. Just for example, I think the following block would never be entered:
! //adjust the parameter tuple size ! if(j<max_arity) ! { ! handle<> args3( PyTuple_New(j) ); ! ! for (size_t l = 0; l != j; ++ l) ! { ! PyTuple_SET_ITEM(args3.get(), l, PyTuple_GET_ITEM(args3.get(), l) ); ! PyTuple_SET_ITEM(args2.get(), l, 0); ! } ! args2 = args3; ! } } } }
It had better not be, because it is getting all the elements of args3 and putting them back there!
Yeah, I don't remember if the things have been different when I wrote this or I have just imagined that I can end up with min_arity < n_args < max_arity. I guess I have meant to copy arg2 -> arg3
! PyTuple_SET_ITEM(args3.get(), l, PyTuple_GET_ITEM(args2.get(), l) ); But anyway it seems really unreachable now.
I've enclosed the modified patch which seems to be working on my machine. I had to rename lots of variables in order to make sense of things. Please look it over to make sure it makes sense to you.
I like it better. Please apply it. Nikolay