Commit 66791afa authored by Hidenori Takeshima's avatar Hidenori Takeshima Committed by Alexandre Julliard

Fix for 64-bit negative seek value.

parent 660b5105
......@@ -1289,9 +1289,12 @@ DWORD WINAPI SetFilePointer( HANDLE hFile, LONG distance, LONG *highword,
{
struct set_file_pointer_request *req = get_req_buffer();
if (highword && *highword)
if (highword &&
((distance >= 0 && *highword != 0) || (distance < 0 && *highword != -1)))
{
FIXME("64-bit offsets not supported yet\n");
FIXME("64-bit offsets not supported yet\n"
"SetFilePointer(%08x,%08lx,%08lx,%08lx)\n",
hFile,distance,*highword,method);
SetLastError( ERROR_INVALID_PARAMETER );
return 0xffffffff;
}
......@@ -1300,7 +1303,7 @@ DWORD WINAPI SetFilePointer( HANDLE hFile, LONG distance, LONG *highword,
req->handle = hFile;
req->low = distance;
req->high = highword ? *highword : 0;
req->high = highword ? *highword : (distance >= 0) ? 0 : -1;
/* FIXME: assumes 1:1 mapping between Windows and Unix seek constants */
req->whence = method;
SetLastError( 0 );
......
......@@ -344,9 +344,9 @@ static int set_file_pointer( int handle, int *low, int *high, int whence )
struct file *file;
int result;
if (*high)
if ((*low >= 0 && *high != 0) || (*low < 0 && *high != -1))
{
fprintf( stderr, "set_file_pointer: offset > 4Gb not supported yet\n" );
fprintf( stderr, "set_file_pointer: offset > 2Gb not supported yet\n" );
set_error( STATUS_INVALID_PARAMETER );
return 0;
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment