Bug#52062: Compiler warning in os0file.c on windows 64-bit
On Windows, the parameter for number of bytes passed into WriteFile() and ReadFile() is DWORD. Casting is needed to silence the warning on 64-bit Windows. Also, adding several asserts to ensure the variable for number of bytes is no more than 32 bits, even on 64-bit Windows. rb://415 Approved by: Inaam
This commit is contained in:
parent
3fb574bf03
commit
ec51b47954
@ -2400,7 +2400,10 @@ os_file_read_func(
|
|||||||
ulint i;
|
ulint i;
|
||||||
#endif /* !UNIV_HOTBACKUP */
|
#endif /* !UNIV_HOTBACKUP */
|
||||||
|
|
||||||
|
/* On 64-bit Windows, ulint is 64 bits. But offset and n should be
|
||||||
|
no more than 32 bits. */
|
||||||
ut_a((offset & 0xFFFFFFFFUL) == offset);
|
ut_a((offset & 0xFFFFFFFFUL) == offset);
|
||||||
|
ut_a((n & 0xFFFFFFFFUL) == n);
|
||||||
|
|
||||||
os_n_file_reads++;
|
os_n_file_reads++;
|
||||||
os_bytes_read_since_printout += n;
|
os_bytes_read_since_printout += n;
|
||||||
@ -2526,7 +2529,10 @@ os_file_read_no_error_handling_func(
|
|||||||
ulint i;
|
ulint i;
|
||||||
#endif /* !UNIV_HOTBACKUP */
|
#endif /* !UNIV_HOTBACKUP */
|
||||||
|
|
||||||
|
/* On 64-bit Windows, ulint is 64 bits. But offset and n should be
|
||||||
|
no more than 32 bits. */
|
||||||
ut_a((offset & 0xFFFFFFFFUL) == offset);
|
ut_a((offset & 0xFFFFFFFFUL) == offset);
|
||||||
|
ut_a((n & 0xFFFFFFFFUL) == n);
|
||||||
|
|
||||||
os_n_file_reads++;
|
os_n_file_reads++;
|
||||||
os_bytes_read_since_printout += n;
|
os_bytes_read_since_printout += n;
|
||||||
@ -2658,7 +2664,10 @@ os_file_write_func(
|
|||||||
ulint i;
|
ulint i;
|
||||||
#endif /* !UNIV_HOTBACKUP */
|
#endif /* !UNIV_HOTBACKUP */
|
||||||
|
|
||||||
ut_a((offset & 0xFFFFFFFF) == offset);
|
/* On 64-bit Windows, ulint is 64 bits. But offset and n should be
|
||||||
|
no more than 32 bits. */
|
||||||
|
ut_a((offset & 0xFFFFFFFFUL) == offset);
|
||||||
|
ut_a((n & 0xFFFFFFFFUL) == n);
|
||||||
|
|
||||||
os_n_file_writes++;
|
os_n_file_writes++;
|
||||||
|
|
||||||
@ -3621,6 +3630,10 @@ os_aio_array_reserve_slot(
|
|||||||
ulint slots_per_seg;
|
ulint slots_per_seg;
|
||||||
ulint local_seg;
|
ulint local_seg;
|
||||||
|
|
||||||
|
#ifdef WIN_ASYNC_IO
|
||||||
|
ut_a((len & 0xFFFFFFFFUL) == len);
|
||||||
|
#endif
|
||||||
|
|
||||||
/* No need of a mutex. Only reading constant fields */
|
/* No need of a mutex. Only reading constant fields */
|
||||||
slots_per_seg = array->n_slots / array->n_segments;
|
slots_per_seg = array->n_slots / array->n_segments;
|
||||||
|
|
||||||
@ -3996,6 +4009,9 @@ os_aio_func(
|
|||||||
ut_ad(n % OS_FILE_LOG_BLOCK_SIZE == 0);
|
ut_ad(n % OS_FILE_LOG_BLOCK_SIZE == 0);
|
||||||
ut_ad(offset % OS_FILE_LOG_BLOCK_SIZE == 0);
|
ut_ad(offset % OS_FILE_LOG_BLOCK_SIZE == 0);
|
||||||
ut_ad(os_aio_validate());
|
ut_ad(os_aio_validate());
|
||||||
|
#ifdef WIN_ASYNC_IO
|
||||||
|
ut_ad((n & 0xFFFFFFFFUL) == n);
|
||||||
|
#endif
|
||||||
|
|
||||||
wake_later = mode & OS_AIO_SIMULATED_WAKE_LATER;
|
wake_later = mode & OS_AIO_SIMULATED_WAKE_LATER;
|
||||||
mode = mode & (~OS_AIO_SIMULATED_WAKE_LATER);
|
mode = mode & (~OS_AIO_SIMULATED_WAKE_LATER);
|
||||||
@ -4271,16 +4287,18 @@ os_aio_windows_handle(
|
|||||||
__FILE__, __LINE__);
|
__FILE__, __LINE__);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
ut_a((slot->len & 0xFFFFFFFFUL) == slot->len);
|
||||||
|
|
||||||
switch (slot->type) {
|
switch (slot->type) {
|
||||||
case OS_FILE_WRITE:
|
case OS_FILE_WRITE:
|
||||||
ret = WriteFile(slot->file, slot->buf,
|
ret = WriteFile(slot->file, slot->buf,
|
||||||
slot->len, &len,
|
(DWORD) slot->len, &len,
|
||||||
&(slot->control));
|
&(slot->control));
|
||||||
|
|
||||||
break;
|
break;
|
||||||
case OS_FILE_READ:
|
case OS_FILE_READ:
|
||||||
ret = ReadFile(slot->file, slot->buf,
|
ret = ReadFile(slot->file, slot->buf,
|
||||||
slot->len, &len,
|
(DWORD) slot->len, &len,
|
||||||
&(slot->control));
|
&(slot->control));
|
||||||
|
|
||||||
break;
|
break;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user