2014-06-26 16:08 GMT+08:00 Piotr Caban <piotr.caban@gmail.com>:
On 06/26/14 06:05, Shuai Meng wrote:
Hi,
I notice that Abs(Null) should return Null according to
http://msdn.microsoft.com/en-us/library/307330xe(v=vs.84).aspx

In wine source code, NULL is defined as 0 in
file dlls/windowscodecs/ungif.h, line 66. I have tried to write like this:
1260     if(V_VT(arg) == VT_NULL) {
1261         V_VT(res) = VT_NULL;
1262         V_NULL(res) = NULL;
1263     }
In case of VT_NULL variant type there's no need to set variant value. You only need to set V_VT(res) to VT_NULL.
Thank you Piotr. I get it.
You also need to handle res==NULL case here.
I guess you mean that I need to handle res==NULL case in branch if(V_VT(arg) == VT_NULL), right? 
 
There is another problem: though Abs(Null) should return Null according to
http://msdn.microsoft.com/en-us/library/307330xe(v=vs.84).aspx , but I test it in WINXP, i.e.  when arg == Null, the vbscript code:
Call Abs(Null) 
and
dim b
b = Abs(Null)
MsgBox b
 returns an error.