diff --git a/Common/Buffer.cpp b/Common/Buffer.cpp index 6dc6b74c5a..58a485593c 100644 --- a/Common/Buffer.cpp +++ b/Common/Buffer.cpp @@ -67,7 +67,9 @@ int Buffer::TakeLineCRLF(std::string *dest) { if (after_next_line < 0) { return after_next_line; } else { - Take(after_next_line - 2, dest); + _dbg_assert_(after_next_line >= 2); + if (after_next_line != 2) + Take((size_t)after_next_line - 2, dest); Skip(2); // Skip the CRLF return after_next_line - 2; } diff --git a/Common/RiscVEmitter.cpp b/Common/RiscVEmitter.cpp index 3f0d47499b..6849acbd19 100644 --- a/Common/RiscVEmitter.cpp +++ b/Common/RiscVEmitter.cpp @@ -615,7 +615,7 @@ const u8 *RiscVEmitter::AlignCode16() { const u8 *RiscVEmitter::AlignCodePage() { int page_size = GetMemoryProtectPageSize(); - int c = int((u64)code_ & (page_size - 1)); + int c = int((intptr_t)code_ & ((intptr_t)page_size - 1)); if (c) ReserveCodeSpace(page_size - c); return code_; @@ -747,7 +747,7 @@ void RiscVEmitter::SetRegToImmediate(RiscVReg rd, uint64_t value, RiscVReg temp) if (SignReduce64(v, 32) == v || force) { int32_t lower = (int32_t)SignReduce64(svalue, 12); int32_t upper = ((v - lower) >> 12) << 12; - _assert_msg_(force || upper + lower == v, "Upper + ADDI immediate math mistake?"); + _assert_msg_(force || (int64_t)upper + lower == v, "Upper + ADDI immediate math mistake?"); // Should be fused on some processors. (this->*upperOp)(rd, upper); diff --git a/Core/Util/DisArm64.cpp b/Core/Util/DisArm64.cpp index eac1edaed5..050589f2f0 100644 --- a/Core/Util/DisArm64.cpp +++ b/Core/Util/DisArm64.cpp @@ -421,14 +421,14 @@ static void DataProcessingRegister(uint32_t w, uint64_t addr, Instruction *instr const char *op = opcode2 >= 8 ? "unk" : opname[opcode]; snprintf(instr->text, sizeof(instr->text), "%s %c%d, %c%d", op, r, Rd, r, Rn); } else if (((w >> 21) & 0x2FF) == 0x0D6) { - const char *opname[32] = { + const char *opname[64] = { 0, 0, "udiv", "sdiv", 0, 0, 0, 0, "lslv", "lsrv", "asrv", "rorv", 0, 0, 0, 0, "crc32b", "crc32h", "crc32w", 0, "crc32cb", "crc32ch", "crc32cw", 0, }; int opcode = (w >> 10) & 0x3F; // Data processing (2 source) - snprintf(instr->text, sizeof(instr->text), "%s %c%d, %c%d, %c%d", opname[opcode], r, Rd, r, Rn, r, Rm); + snprintf(instr->text, sizeof(instr->text), "%s %c%d, %c%d, %c%d", opname[opcode] ? opname[opcode] : "?", r, Rd, r, Rn, r, Rm); } else if (((w >> 24) & 0x1f) == 0xA) { // Logical (shifted register) int shift = (w >> 22) & 0x3; @@ -929,9 +929,9 @@ static void FPandASIMD2(uint32_t w, uint64_t addr, Instruction *instr) { snprintf(instr->text, sizeof(instr->text), "(float cond compare %08x)", w); } else if (((w >> 10) & 3) == 2) { int opc = (w >> 12) & 0xf; - const char *opnames[9] = { "fmul", "fdiv", "fadd", "fsub", "fmax", "fmin", "fmaxnm", "fminnm", "fnmul" }; + const char *opnames[16] = { "fmul", "fdiv", "fadd", "fsub", "fmax", "fmin", "fmaxnm", "fminnm", "fnmul" }; char r = ((w >> 22) & 1) ? 'd' : 's'; - snprintf(instr->text, sizeof(instr->text), "%s %c%d, %c%d, %c%d", opnames[opc], r, Rd, r, Rn, r, Rm); + snprintf(instr->text, sizeof(instr->text), "%s %c%d, %c%d, %c%d", opnames[opc] ? opnames[opc] : "?", r, Rd, r, Rn, r, Rm); } else if (((w >> 10) & 3) == 3) { char fr = ((w >> 22) & 1) ? 'd' : 's'; int cond = (w >> 12) & 0xf; diff --git a/GPU/Common/FramebufferManagerCommon.cpp b/GPU/Common/FramebufferManagerCommon.cpp index d3bfa8677f..1fa20e2733 100644 --- a/GPU/Common/FramebufferManagerCommon.cpp +++ b/GPU/Common/FramebufferManagerCommon.cpp @@ -1999,7 +1999,7 @@ bool FramebufferManagerCommon::FindTransferFramebuffer(u32 basePtr, int stride_p } } - if (!candidates.empty()) { + if (best) { *rect = *best; return true; } else { diff --git a/Windows/CaptureDevice.cpp b/Windows/CaptureDevice.cpp index e522c7b24e..7b61fa6fa0 100644 --- a/Windows/CaptureDevice.cpp +++ b/Windows/CaptureDevice.cpp @@ -716,7 +716,7 @@ std::vector WindowsCaptureDevice::getDeviceList(bool forceEnum, int // Get the size needed first dwMinSize = WideCharToMultiByte(CP_UTF8, NULL, pwstrName, -1, nullptr, 0, nullptr, FALSE); if (dwMinSize == 0) - hr = -1; + hr = E_FAIL; } if (SUCCEEDED(hr)) { cstrName = new char[dwMinSize];