Ah, the beauty of two's complement and division of ip addresses. ip_address was a signed int and because of this, IPADDRESS_SetAddress would convert an address such as 130.10.20.30 into 131.11.21.30. But and address such as 10.20.30.40 would get through correctly! Changelog: François Gouget <fgouget@codeweavers.com> * dlls/comctl32/ipaddress.c Storing an ipaddress in a signed int results in bugs if it starts with >=128 -- François Gouget fgouget@codeweavers.com
Index: dlls/comctl32/ipaddress.c =================================================================== RCS file: /home/wine/wine/dlls/comctl32/ipaddress.c,v retrieving revision 1.18 diff -u -r1.18 ipaddress.c --- dlls/comctl32/ipaddress.c 2001/07/25 00:43:30 1.18 +++ dlls/comctl32/ipaddress.c 2002/02/04 07:48:24 @@ -347,7 +347,8 @@ HDC hdc; LPIP_SUBCLASS_INFO lpipsi=(LPIP_SUBCLASS_INFO) GetPropA ((HWND)hwnd, IP_SUBCLASS_PROP); - int i,ip_address,value; + int i,value; + DWORD ip_address; char buf[20]; TRACE("\n"); @@ -361,7 +362,7 @@ SetWindowTextA (lpipsi->hwndIP[i],buf); IPADDRESS_SendNotify (hwnd, EN_CHANGE); } - ip_address/=256; + ip_address= ip_address >> 8; } hdc = GetDC (hwnd); /* & send notifications */