shlwapi: Implemented StrToInt64ExA/W
Jacek Caban
jacek at codeweavers.com
Sun Feb 26 13:42:45 CST 2012
Hi Carlo,
On 2/26/12 12:56 PM, carlo.bramix at libero.it wrote:
> I improved the patch according to the suggestions that I received:
> 1) Removed the C++ style comment
> 2) Removed the WARN message
> 3) Added the tests for the new functions. The test has been run successfully
> on Ubuntu 11.10.
>
> Sincerely
Thanks for fixing those. This version looks better, but still could use
some improvements (mostly for failing tests on win2k).
BOOL WINAPI StrToIntExA(LPCSTR lpszStr, DWORD dwFlags, LPINT lpiRet)
{
+ LARGE_INTEGER li;
+ BOOL bRes;
+
+ TRACE("(%s,%08X,%p)\n", debugstr_a(lpszStr), dwFlags, lpiRet);
+
+ if (!lpiRet)
+ return FALSE;
In previous patch you mentioned that Windows crashes in this situation.
Thus there is no point in having this check on Wine.
int str_to_int;
int str_to_int_ex;
int str_to_int_hex;
+ LONGLONG str_to_int64_ex;
+ LONGLONG str_to_int64_hex;
AFAICS int str_to_int* always matches str_to_int64* values except for
overflows. It means that you could simply change str_to_int_* to be
LONGLONG and simply cast it to int before using it in existing tests.
+ { "0x44ff", 0, 0, 0x44ff, 0, 0x44ff },
+ { "0x2bdc546291f4b1", 0, 0, 0x6291f4b1, 0, 0x2bdc546291f4b1 },
64-bit literals are not portable. Something like
((ULONGLONG)0x2bdc54<<32) | (ULONGLONG)0x6291f4b1 would do the trick.
+ while (result->string)
+ {
+ return_val = -1;
+ bRet = StrToInt64ExA(result->string,0,&return_val);
This function is not available on win2k
(http://testbot.winehq.org/JobDetails.pl?Key=17105&scrshot_202=1#k202),
so it needs to be loaded dynamically via GetProcAddress. See how other
functions are handled.
Cheers,
Jacek
More information about the wine-devel
mailing list