From a442933bbfc148115012958d80795e5daafe1ff8 Mon Sep 17 00:00:00 2001 From: Jeffrey Pfau Date: Tue, 20 Oct 2015 22:29:59 -0700 Subject: [PATCH] All: Fix some undefined behavior warnings --- CHANGES | 1 + src/arm/isa-thumb.c | 2 +- src/gba/audio.c | 2 +- src/gba/audio.h | 2 +- src/gba/renderers/software-mode0.c | 2 +- src/gba/renderers/software-obj.c | 2 +- src/gba/renderers/software-private.h | 2 +- src/gba/renderers/video-software.c | 2 +- src/gba/renderers/video-software.h | 4 ++-- 9 files changed, 10 insertions(+), 9 deletions(-) diff --git a/CHANGES b/CHANGES index f0954bd87..47b70d92f 100644 --- a/CHANGES +++ b/CHANGES @@ -47,6 +47,7 @@ Misc: - SDL: Allow GBASDLAudio to be used without a thread context - All: Improved PowerPC support - All: Add --version flag + - All: Fix some undefined behavior warnings 0.3.0: (2015-08-16) Features: diff --git a/src/arm/isa-thumb.c b/src/arm/isa-thumb.c index 4132303fa..68a4be73f 100644 --- a/src/arm/isa-thumb.c +++ b/src/arm/isa-thumb.c @@ -308,7 +308,7 @@ DEFINE_LOAD_STORE_MULTIPLE_THUMB(STMIA, #define DEFINE_CONDITIONAL_BRANCH_THUMB(COND) \ DEFINE_INSTRUCTION_THUMB(B ## COND, \ if (ARM_COND_ ## COND) { \ - int8_t immediate = opcode; \ + uint8_t immediate = opcode; \ cpu->gprs[ARM_PC] += immediate << 1; \ THUMB_WRITE_PC; \ }) diff --git a/src/gba/audio.c b/src/gba/audio.c index 965e03c44..305b4545b 100644 --- a/src/gba/audio.c +++ b/src/gba/audio.c @@ -523,7 +523,7 @@ void GBAAudioSampleFIFO(struct GBAAudio* audio, int fifoId, int32_t cycles) { channel->dmaSource = 0; } } - CircleBufferRead8(&channel->fifo, &channel->sample); + CircleBufferRead8(&channel->fifo, (int8_t*) &channel->sample); } #if RESAMPLE_LIBRARY != RESAMPLE_BLIP_BUF diff --git a/src/gba/audio.h b/src/gba/audio.h index 31550b36a..7e97428f9 100644 --- a/src/gba/audio.h +++ b/src/gba/audio.h @@ -135,7 +135,7 @@ struct GBAAudioChannel4 { struct GBAAudioFIFO { struct CircleBuffer fifo; int dmaSource; - int8_t sample; + uint8_t sample; }; DECL_BITFIELD(GBARegisterSOUNDCNT_LO, uint16_t); diff --git a/src/gba/renderers/software-mode0.c b/src/gba/renderers/software-mode0.c index 7b0ccc754..a261b5427 100644 --- a/src/gba/renderers/software-mode0.c +++ b/src/gba/renderers/software-mode0.c @@ -468,7 +468,7 @@ void GBAVideoSoftwareRendererDrawBackgroundMode0(struct GBAVideoSoftwareRenderer unsigned xBase; - int flags = (background->priority << OFFSET_PRIORITY) | (background->index << OFFSET_INDEX) | FLAG_IS_BACKGROUND; + uint32_t flags = (background->priority << OFFSET_PRIORITY) | (background->index << OFFSET_INDEX) | FLAG_IS_BACKGROUND; flags |= FLAG_TARGET_2 * background->target2; int objwinFlags = FLAG_TARGET_1 * (background->target1 && renderer->blendEffect == BLEND_ALPHA && GBAWindowControlIsBlendEnable(renderer->objwin.packed)); objwinFlags |= flags; diff --git a/src/gba/renderers/software-obj.c b/src/gba/renderers/software-obj.c index 4f6a7e63e..9d4bd58fc 100644 --- a/src/gba/renderers/software-obj.c +++ b/src/gba/renderers/software-obj.c @@ -140,7 +140,7 @@ int GBAVideoSoftwareRendererPreprocessSprite(struct GBAVideoSoftwareRenderer* re uint32_t flags = GBAObjAttributesCGetPriority(sprite->c) << OFFSET_PRIORITY; flags |= FLAG_TARGET_1 * ((GBAWindowControlIsBlendEnable(renderer->currentWindow.packed) && renderer->target1Obj && renderer->blendEffect == BLEND_ALPHA) || GBAObjAttributesAGetMode(sprite->a) == OBJ_MODE_SEMITRANSPARENT); flags |= FLAG_OBJWIN * (GBAObjAttributesAGetMode(sprite->a) == OBJ_MODE_OBJWIN); - int32_t x = GBAObjAttributesBGetX(sprite->b) << 23; + int32_t x = (uint32_t) GBAObjAttributesBGetX(sprite->b) << 23; x >>= 23; uint16_t* vramBase = &renderer->d.vram[BASE_TILE >> 1]; unsigned charBase = GBAObjAttributesCGetTile(sprite->c) * 0x20; diff --git a/src/gba/renderers/software-private.h b/src/gba/renderers/software-private.h index 75eff1e5d..1f33de478 100644 --- a/src/gba/renderers/software-private.h +++ b/src/gba/renderers/software-private.h @@ -177,7 +177,7 @@ static inline void _compositeNoBlendNoObjwin(struct GBAVideoSoftwareRenderer* re int32_t localX; \ int32_t localY; \ \ - int flags = (background->priority << OFFSET_PRIORITY) | (background->index << OFFSET_INDEX) | FLAG_IS_BACKGROUND; \ + uint32_t flags = (background->priority << OFFSET_PRIORITY) | (background->index << OFFSET_INDEX) | FLAG_IS_BACKGROUND; \ flags |= FLAG_TARGET_2 * background->target2; \ int objwinFlags = FLAG_TARGET_1 * (background->target1 && renderer->blendEffect == BLEND_ALPHA && \ GBAWindowControlIsBlendEnable(renderer->objwin.packed)); \ diff --git a/src/gba/renderers/video-software.c b/src/gba/renderers/video-software.c index fb7755b52..ab9e98b0f 100644 --- a/src/gba/renderers/video-software.c +++ b/src/gba/renderers/video-software.c @@ -772,7 +772,7 @@ static void _drawScanline(struct GBAVideoSoftwareRenderer* renderer, int y) { } } - int priority; + unsigned priority; for (priority = 0; priority < 4; ++priority) { renderer->end = 0; for (w = 0; w < renderer->nWindows; ++w) { diff --git a/src/gba/renderers/video-software.h b/src/gba/renderers/video-software.h index 906d63444..b73ef98ea 100644 --- a/src/gba/renderers/video-software.h +++ b/src/gba/renderers/video-software.h @@ -23,9 +23,9 @@ struct GBAVideoSoftwareSprite { }; struct GBAVideoSoftwareBackground { - int index; + unsigned index; int enabled; - int priority; + unsigned priority; uint32_t charBase; int mosaic; int multipalette;