From: Mark G. <ma...@go...> - 2008-12-03 01:29:59
|
> In Lua binding, number arguments are directly casted to > target type, like > this: > $1 = ($type)lua_tonumber(L, $input); > > There is no check for unsigned numbers. So, for exemple: > Lua> getElementInMyVector(-1) > ... crash ... > > I suggest to use patch in attachment to correct this > behaviour. Nevertheless, > I am not familiar with Swig macros, so it may exist better > way to correct > this. > > > Cheers, > > -- > J?r?me Pouiller (jezz AT sysmic DOT org) > -------------- next part -------------- > A non-text attachment was scrubbed... > Name: checkNegativeNumbers.patch > Type: text/x-diff > Size: 983 bytes > Desc: not available > > ------------------------------ Hello Jezz, When you posted this patch the first time it was scrubbed by the mailman. The mailman has scrubbed the patch again. Please send it DIRECTLY to me so that I can apply it. Here is my version, which you could add to the start of any of your interface files. I will merge your patch with mine and commit to SVN. ------------ %typemap(in,checkfn="lua_isnumber") unsigned int,unsigned short,unsigned long,unsigned char %{SWIG_contract_assert((lua_tonumber(L,$input)<0),"number must not be negative") $1 = ($type)lua_tonumber(L, $input);%} %typemap(in,checkfn="lua_isnumber") const unsigned int&($basetype temp) %{SWIG_contract_assert((lua_tonumber(L,$input)<0),"number must not be negative") temp=($basetype)lua_tonumber(L,$input); $1=&temp;%} %apply const unsigned int & {const unsigned short&,const unsigned long&,const unsigned char&}; -------------- Awaiting your patch. Mark |