Hi,
On 10/06/13 00:45, morphiend wrote:
> + * _chsize_s (MSVCRT.@)
> + */
> +int CDECL MSVCRT__chsize_s(int fd, __int64 size)
> +{
> + LARGE_INTEGER cur, pos;
> + LARGE_INTEGER temp = { 0 };
This causes compilation warnings. There's also a trailing space in this
line.
> + TRACE("(fd=%d, size=%lld)\n", fd, size);
You can't print 64-bit numbers this way, it's not portable. You can use
wine_dbgstr_longlong function.
> + handle = msvcrt_fdtoh(fd);
> + if (!MSVCRT_CHECK_PMT_ERR(handle == INVALID_HANDLE_VALUE, MSVCRT_EBADF) ||
> + !MSVCRT_CHECK_PMT_ERR(size < 0, MSVCRT_EINVAL))
You're validating parameters incorrectly. Did you test this patch?
> + {
> + ret = SetEndOfFile(handle);
> + if (!ret)
> + {
> + msvcrt_set_errno(GetLastError());
> + ret = *MSVCRT__errno();
> + }
This causes the _chsize_s function to return TRUE in case of success.
> + /* restore the file pointer */
> + MSVCRT__lseek(fd, cur.QuadPart, SEEK_SET);
MSVCRT__lseek takes LONG as second argument.
Cheers,
Piotr