mingw: use uintptr_t when converting a pointer to an int

win64 uses 32 bit long, so we cannot use a long to hold a 64 bit
pointer. Thankfully, there's a [u]intptr_t type available exactly
for these uses.
This commit is contained in:
Christophe Fergeau 2012-02-29 19:01:54 +01:00 committed by Alon Levy
parent 534b71dfaa
commit 5989e2d1c4
4 changed files with 7 additions and 7 deletions

View File

@ -70,7 +70,7 @@ void Canvas::clear()
void Canvas::begin_draw(SpiceMsgDisplayBase& base, int size, size_t min_size)
{
_base = (unsigned long)&base;
_base = (uintptr_t)&base;
}
void Canvas::draw_fill(SpiceMsgDisplayDrawFill& fill, int size)

View File

@ -64,7 +64,7 @@ CursorData::CursorData(SpiceCursor& cursor, int data_size)
}
if (data_size < expected_size) {
THROW("access violation 0x%lx %u", (unsigned long)cursor.data, expected_size);
THROW("access violation 0x%lx %u", (uintptr_t)cursor.data, expected_size);
}
_data = new uint8_t[expected_size];
memcpy(_data, cursor.data, expected_size);

View File

@ -39,8 +39,8 @@
extern "C" {
#endif
#define SPICE_GET_ADDRESS(addr) ((void *)(unsigned long)(addr))
#define SPICE_SET_ADDRESS(addr, val) ((addr) = (unsigned long)(val))
#define SPICE_GET_ADDRESS(addr) ((void *)(uintptr_t)(addr))
#define SPICE_SET_ADDRESS(addr, val) ((addr) = (uintptr_t)(val))
typedef int32_t SPICE_FIXED28_4;

View File

@ -243,19 +243,19 @@ void spice_pixman_fill_rect(pixman_image_t *dest,
byte_line += stride;
w = byte_width;
while (w >= 1 && ((unsigned long)d & 1)) {
while (w >= 1 && ((uintptr_t)d & 1)) {
*(uint8_t *)d = (value & 0xff);
w--;
d++;
}
while (w >= 2 && ((unsigned long)d & 3)) {
while (w >= 2 && ((uintptr_t)d & 3)) {
*(uint16_t *)d = value;
w -= 2;
d += 2;
}
while (w >= 4 && ((unsigned long)d & 7)) {
while (w >= 4 && ((uintptr_t)d & 7)) {
*(uint32_t *)d = value;
w -= 4;