<div dir="ltr">Hi,<div>I notice that Abs(Null) should return Null according to <a href="http://msdn.microsoft.com/en-us/library/307330xe(v=vs.84).aspx">http://msdn.microsoft.com/en-us/library/307330xe(v=vs.84).aspx</a></div>

<div><br></div><div>In wine source code, NULL is defined as 0 in file dlls/windowscodecs/ungif.h, line 66. I have tried to write like this:</div><div><div>1260     if(V_VT(arg) == VT_NULL) {</div><div>1261         V_VT(res) = VT_NULL;</div>

<div>1262         V_NULL(res) = NULL;</div><div>1263     }</div><div>1264     else {</div><div>1265         hres = to_double(arg, &v);</div><div>1266         if (FAILED(hres))</div><div>1267             return hres;</div>

<div>1268         </div><div>1269         if(res) {</div><div>1270             V_VT(res) = VT_R8; </div><div>1271             V_R8(res) = v >= 0 ? v : -v;</div><div>1272         }</div><div>1273     }</div><div>1274     return S_OK;</div>

</div><div><br></div><div>But apparently this makes no sense: V_NULL is defined in dlls/oleaut32/tests/vartest.c, not along with V_I2 in include/oleauto.h; I don't know how give res a "Null" value in C.</div>

</div><div class="gmail_extra"><br><br><div class="gmail_quote">2014-06-17 17:44 GMT+08:00 Jacek Caban <span dir="ltr"><<a href="mailto:jacek@codeweavers.com" target="_blank">jacek@codeweavers.com</a>></span>:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">

On 06/17/14 08:00, Shuai Meng wrote:<br>
> diff --git a/dlls/vbscript/global.c b/dlls/vbscript/global.c<br>
> index d21784d..e646a29 100644<br>
> --- a/dlls/vbscript/global.c<br>
> +++ b/dlls/vbscript/global.c<br>
> @@ -1302,8 +1302,24 @@ static HRESULT Global_ChrW(vbdisp_t *This, VARIANT *arg, unsigned args_cnt, VARI<br>
><br>
>  static HRESULT Global_Abs(vbdisp_t *This, VARIANT *arg, unsigned args_cnt, VARIANT *res)<br>
>  {<br>
> -    FIXME("\n");<br>
> -    return E_NOTIMPL;<br>
> +    VARIANT v;<br>
> +    HRESULT hres;<br>
> +<br>
> +    TRACE("(%s)\n", debugstr_variant(arg));<br>
> +<br>
> +    assert(args_cnt == 1);<br>
> +<br>
> +    V_VT(&v) = VT_EMPTY;<br>
> +    hres = VariantChangeType(&v, arg, VARIANT_LOCALBOOL, VT_R8);<br>
> +        if (FAILED(hres))<br>
> +            return S_OK;<br>
<br>
Please use to_double here. Also note weird indention here.<br>
<span class="HOEnZb"><font color="#888888"><br>
Jacek<br>
<br>
<br>
</font></span></blockquote></div><br></div>