diff --git a/src/core/arm/skyeye_common/armstate.cpp b/src/core/arm/skyeye_common/armstate.cpp index 078b4db24..4971d8c2e 100644 --- a/src/core/arm/skyeye_common/armstate.cpp +++ b/src/core/arm/skyeye_common/armstate.cpp @@ -110,7 +110,7 @@ void ARMul_State::Reset() { Reg[13] = 0x10000000; Reg[15] = 0; - Cpsr = static_cast(INTBITS) | SVC32MODE; + Cpsr = static_cast(INTBITS) | static_cast(SVC32MODE); Mode = SVC32MODE; Bank = SVCBANK; diff --git a/src/core/cheats/cheats.cpp b/src/core/cheats/cheats.cpp index 14fd02775..26a77edee 100644 --- a/src/core/cheats/cheats.cpp +++ b/src/core/cheats/cheats.cpp @@ -52,7 +52,7 @@ void CheatEngine::AddCheat(const std::shared_ptr& cheat) { void CheatEngine::RemoveCheat(std::size_t index) { std::unique_lock lock(cheats_list_mutex); - if (index < 0 || index >= static_cast(cheats_list.size())) { + if (index < 0 || index >= cheats_list.size()) { LOG_ERROR(Core_Cheats, "Invalid index {}", index); return; } @@ -61,7 +61,7 @@ void CheatEngine::RemoveCheat(std::size_t index) { void CheatEngine::UpdateCheat(std::size_t index, const std::shared_ptr& new_cheat) { std::unique_lock lock(cheats_list_mutex); - if (index < 0 || index >= static_cast(cheats_list.size())) { + if (index < 0 || index >= cheats_list.size()) { LOG_ERROR(Core_Cheats, "Invalid index {}", index); return; } diff --git a/src/core/dumping/ffmpeg_backend.cpp b/src/core/dumping/ffmpeg_backend.cpp index c0c8a4f46..caef31ca8 100644 --- a/src/core/dumping/ffmpeg_backend.cpp +++ b/src/core/dumping/ffmpeg_backend.cpp @@ -59,21 +59,25 @@ void FFmpegStream::Flush() { SendFrame(nullptr); } -void FFmpegStream::WritePacket(AVPacket& packet) { - FFmpeg::av_packet_rescale_ts(&packet, codec_context->time_base, stream->time_base); - packet.stream_index = stream->index; +void FFmpegStream::WritePacket(AVPacket* packet) { + FFmpeg::av_packet_rescale_ts(packet, codec_context->time_base, stream->time_base); + packet->stream_index = stream->index; { std::lock_guard lock{*format_context_mutex}; - FFmpeg::av_interleaved_write_frame(format_context, &packet); + FFmpeg::av_interleaved_write_frame(format_context, packet); } } void FFmpegStream::SendFrame(AVFrame* frame) { // Initialize packet - AVPacket packet; - FFmpeg::av_init_packet(&packet); - packet.data = nullptr; - packet.size = 0; + AVPacket* packet = FFmpeg::av_packet_alloc(); + if (!packet) { + LOG_ERROR(Render, "Frame dropped: av_packet_alloc failed"); + } + SCOPE_EXIT({ FFmpeg::av_packet_free(&packet); }); + + packet->data = nullptr; + packet->size = 0; // Encode frame if (FFmpeg::avcodec_send_frame(codec_context.get(), frame) < 0) { @@ -82,7 +86,7 @@ void FFmpegStream::SendFrame(AVFrame* frame) { } int error = 1; while (error >= 0) { - error = FFmpeg::avcodec_receive_packet(codec_context.get(), &packet); + error = FFmpeg::avcodec_receive_packet(codec_context.get(), packet); if (error == AVERROR(EAGAIN) || error == AVERROR_EOF) return; if (error < 0) { @@ -485,7 +489,7 @@ bool FFmpegAudioStream::Init(FFmpegMuxer& muxer) { } codec_context->time_base.num = 1; codec_context->time_base.den = codec_context->sample_rate; -#if LIBAVCODEC_VERSION_INT >= AV_VERSION_INT(59, 24, 100) +#if LIBAVCODEC_VERSION_INT >= AV_VERSION_INT(59, 24, 100) // lavc 59.24.100 codec_context->ch_layout = AV_CHANNEL_LAYOUT_STEREO; #else codec_context->channel_layout = AV_CH_LAYOUT_STEREO; @@ -527,7 +531,7 @@ bool FFmpegAudioStream::Init(FFmpegMuxer& muxer) { audio_frame->format = codec_context->sample_fmt; audio_frame->sample_rate = codec_context->sample_rate; -#if LIBAVCODEC_VERSION_INT >= AV_VERSION_INT(59, 24, 100) +#if LIBAVCODEC_VERSION_INT >= AV_VERSION_INT(59, 24, 100) // lavc 59.24.100 auto num_channels = codec_context->ch_layout.nb_channels; audio_frame->ch_layout = codec_context->ch_layout; SwrContext* context = nullptr; @@ -1003,7 +1007,7 @@ void GetOptionList(std::vector& out, const AVClass* av_class, bool s } const AVClass* child_class = nullptr; -#if LIBAVCODEC_VERSION_MAJOR >= 59 +#if LIBAVUTIL_VERSION_INT >= AV_VERSION_INT(56, 53, 100) // lavu 56.53.100 void* iter = nullptr; while ((child_class = FFmpeg::av_opt_child_class_iterate(av_class, &iter))) { #else diff --git a/src/core/dumping/ffmpeg_backend.h b/src/core/dumping/ffmpeg_backend.h index 115731f67..c8eb0ae3f 100644 --- a/src/core/dumping/ffmpeg_backend.h +++ b/src/core/dumping/ffmpeg_backend.h @@ -37,7 +37,7 @@ public: protected: ~FFmpegStream(); - void WritePacket(AVPacket& packet); + void WritePacket(AVPacket* packet); void SendFrame(AVFrame* frame); struct AVCodecContextDeleter { @@ -52,6 +52,12 @@ protected: } }; + struct AVPacketDeleter { + void operator()(AVPacket* packet) const { + av_packet_free(&packet); + } + }; + AVFormatContext* format_context{}; std::mutex* format_context_mutex{}; std::unique_ptr codec_context{}; diff --git a/src/core/file_sys/archive_backend.h b/src/core/file_sys/archive_backend.h index 77f041d7e..0fada0f23 100644 --- a/src/core/file_sys/archive_backend.h +++ b/src/core/file_sys/archive_backend.h @@ -31,7 +31,7 @@ enum class LowPathType : u32 { }; union Mode { - u32 hex; + u32 hex = 0; BitField<0, 1, u32> read_flag; BitField<1, 1, u32> write_flag; BitField<2, 1, u32> create_flag; diff --git a/src/core/hle/kernel/kernel.h b/src/core/hle/kernel/kernel.h index b807bc261..600465241 100644 --- a/src/core/hle/kernel/kernel.h +++ b/src/core/hle/kernel/kernel.h @@ -90,7 +90,7 @@ union CoreVersion { major.Assign(major_ver); } - u32 raw; + u32 raw = 0; BitField<8, 8, u32> revision; BitField<16, 8, u32> minor; BitField<24, 8, u32> major; diff --git a/src/core/hle/kernel/thread.cpp b/src/core/hle/kernel/thread.cpp index 6c7b93d05..a6ccf9525 100644 --- a/src/core/hle/kernel/thread.cpp +++ b/src/core/hle/kernel/thread.cpp @@ -3,6 +3,7 @@ // Refer to the license.txt file included. #include +#include #include #include #include @@ -288,7 +289,7 @@ void ThreadManager::DebugThreadQueue() { for (auto& t : thread_list) { u32 priority = ready_queue.contains(t.get()); - if (priority != -1) { + if (priority != UINT_MAX) { LOG_DEBUG(Kernel, "0x{:02X} {}", priority, t->GetObjectId()); } } diff --git a/src/core/hle/service/cfg/cfg.cpp b/src/core/hle/service/cfg/cfg.cpp index 9a2956b31..3b2c6e113 100644 --- a/src/core/hle/service/cfg/cfg.cpp +++ b/src/core/hle/service/cfg/cfg.cpp @@ -904,7 +904,7 @@ void Module::SetSystemSetupNeeded(bool setup_needed) { } bool Module::IsSystemSetupNeeded() { - u32 block; + u32 block{}; GetConfigInfoBlock(SystemSetupRequiredBlockID, sizeof(block), 0xC, &block); return (block & 0xFFFF) == 0; } diff --git a/src/core/hle/service/ir/extra_hid.cpp b/src/core/hle/service/ir/extra_hid.cpp index 5e7511033..eff81c711 100644 --- a/src/core/hle/service/ir/extra_hid.cpp +++ b/src/core/hle/service/ir/extra_hid.cpp @@ -204,12 +204,11 @@ void ExtraHID::HandleReadCalibrationDataRequest(const std::vector& request_b return; } - std::vector response(5); + std::vector response(5 + size); response[0] = static_cast(ResponseID::ReadCalibrationData); std::memcpy(&response[1], &request.offset, sizeof(request.offset)); std::memcpy(&response[3], &request.size, sizeof(request.size)); - response.insert(response.end(), calibration_data.begin() + offset, - calibration_data.begin() + offset + size); + std::memcpy(&response[5], calibration_data.data() + offset, size); Send(response); } diff --git a/src/core/hle/service/nwm/uds_data.cpp b/src/core/hle/service/nwm/uds_data.cpp index 6cc381a43..396bc8548 100644 --- a/src/core/hle/service/nwm/uds_data.cpp +++ b/src/core/hle/service/nwm/uds_data.cpp @@ -303,6 +303,7 @@ std::vector GenerateEAPoLStartFrame(u16 association_id, const NodeInfo& node std::memcpy(eapol_buffer.data(), &eapol_start, sizeof(eapol_start)); std::vector buffer = GenerateLLCHeader(EtherType::EAPoL); + buffer.reserve(buffer.size() + sizeof(EAPoLStartPacket)); buffer.insert(buffer.end(), eapol_buffer.begin(), eapol_buffer.end()); return buffer; } @@ -366,6 +367,7 @@ std::vector GenerateEAPoLLogoffFrame(const MacAddress& mac_address, u16 netw std::memcpy(eapol_buffer.data(), &eapol_logoff, sizeof(eapol_logoff)); std::vector buffer = GenerateLLCHeader(EtherType::EAPoL); + buffer.reserve(buffer.size() + sizeof(EAPoLStartPacket)); buffer.insert(buffer.end(), eapol_buffer.begin(), eapol_buffer.end()); return buffer; } diff --git a/src/core/hle/service/soc_u.cpp b/src/core/hle/service/soc_u.cpp index 7be6624d6..eba312ee3 100644 --- a/src/core/hle/service/soc_u.cpp +++ b/src/core/hle/service/soc_u.cpp @@ -519,9 +519,9 @@ struct CTRPollFD { CTRPollFD result; result.events.hex = Events::TranslateTo3DS(fd.events, has_libctru_bug).hex; result.revents.hex = Events::TranslateTo3DS(fd.revents, has_libctru_bug).hex; - for (auto iter = socu.open_sockets.begin(); iter != socu.open_sockets.end(); ++iter) { - if (iter->second.socket_fd == fd.fd) { - result.fd = iter->first; + for (const auto& socket : socu.open_sockets) { + if (socket.second.socket_fd == fd.fd) { + result.fd = socket.first; break; } } @@ -662,7 +662,8 @@ struct CTRAddrInfo { }; ctr_addr.ai_addrlen = static_cast(ctr_addr.ai_addr.raw.len); if (addr.ai_canonname) - std::strncpy(ctr_addr.ai_canonname, addr.ai_canonname, sizeof(ctr_addr.ai_canonname)); + std::strncpy(ctr_addr.ai_canonname, addr.ai_canonname, + sizeof(ctr_addr.ai_canonname) - 1); return ctr_addr; } diff --git a/src/core/movie.cpp b/src/core/movie.cpp index 2348fe827..c2d085d29 100644 --- a/src/core/movie.cpp +++ b/src/core/movie.cpp @@ -45,7 +45,7 @@ struct ControllerState { union { struct { union { - u16_le hex; + u16_le hex = 0; BitField<0, 1, u16> a; BitField<1, 1, u16> b; @@ -96,7 +96,7 @@ struct ControllerState { struct { union { - u32_le hex; + u32_le hex = 0; BitField<0, 5, u32> battery_level; BitField<5, 1, u32> zl_not_held; @@ -136,7 +136,7 @@ static u64 GetInputCount(const std::vector& input) { break; } - ControllerState state; + ControllerState state{}; std::memcpy(&state, input.data() + pos, sizeof(ControllerState)); if (state.type == ControllerStateType::PadAndCircle) { input_count++; @@ -238,7 +238,7 @@ void Movie::CheckInputEnd() { } void Movie::Play(Service::HID::PadState& pad_state, s16& circle_pad_x, s16& circle_pad_y) { - ControllerState s; + ControllerState s{}; std::memcpy(&s, &recorded_input[current_byte], sizeof(ControllerState)); current_byte += sizeof(ControllerState); current_input++; @@ -270,7 +270,7 @@ void Movie::Play(Service::HID::PadState& pad_state, s16& circle_pad_x, s16& circ } void Movie::Play(Service::HID::TouchDataEntry& touch_data) { - ControllerState s; + ControllerState s{}; std::memcpy(&s, &recorded_input[current_byte], sizeof(ControllerState)); current_byte += sizeof(ControllerState); @@ -287,7 +287,7 @@ void Movie::Play(Service::HID::TouchDataEntry& touch_data) { } void Movie::Play(Service::HID::AccelerometerDataEntry& accelerometer_data) { - ControllerState s; + ControllerState s{}; std::memcpy(&s, &recorded_input[current_byte], sizeof(ControllerState)); current_byte += sizeof(ControllerState); @@ -304,7 +304,7 @@ void Movie::Play(Service::HID::AccelerometerDataEntry& accelerometer_data) { } void Movie::Play(Service::HID::GyroscopeDataEntry& gyroscope_data) { - ControllerState s; + ControllerState s{}; std::memcpy(&s, &recorded_input[current_byte], sizeof(ControllerState)); current_byte += sizeof(ControllerState); @@ -321,7 +321,7 @@ void Movie::Play(Service::HID::GyroscopeDataEntry& gyroscope_data) { } void Movie::Play(Service::IR::PadState& pad_state, s16& c_stick_x, s16& c_stick_y) { - ControllerState s; + ControllerState s{}; std::memcpy(&s, &recorded_input[current_byte], sizeof(ControllerState)); current_byte += sizeof(ControllerState); @@ -339,7 +339,7 @@ void Movie::Play(Service::IR::PadState& pad_state, s16& c_stick_x, s16& c_stick_ } void Movie::Play(Service::IR::ExtraHIDResponse& extra_hid_response) { - ControllerState s; + ControllerState s{}; std::memcpy(&s, &recorded_input[current_byte], sizeof(ControllerState)); current_byte += sizeof(ControllerState); @@ -371,7 +371,7 @@ void Movie::Record(const Service::HID::PadState& pad_state, const s16& circle_pa const s16& circle_pad_y) { current_input++; - ControllerState s; + ControllerState s{}; s.type = ControllerStateType::PadAndCircle; s.pad_and_circle.a.Assign(static_cast(pad_state.a)); @@ -396,7 +396,7 @@ void Movie::Record(const Service::HID::PadState& pad_state, const s16& circle_pa } void Movie::Record(const Service::HID::TouchDataEntry& touch_data) { - ControllerState s; + ControllerState s{}; s.type = ControllerStateType::Touch; s.touch.x = touch_data.x; @@ -407,7 +407,7 @@ void Movie::Record(const Service::HID::TouchDataEntry& touch_data) { } void Movie::Record(const Service::HID::AccelerometerDataEntry& accelerometer_data) { - ControllerState s; + ControllerState s{}; s.type = ControllerStateType::Accelerometer; s.accelerometer.x = accelerometer_data.x; @@ -418,7 +418,7 @@ void Movie::Record(const Service::HID::AccelerometerDataEntry& accelerometer_dat } void Movie::Record(const Service::HID::GyroscopeDataEntry& gyroscope_data) { - ControllerState s; + ControllerState s{}; s.type = ControllerStateType::Gyroscope; s.gyroscope.x = gyroscope_data.x; @@ -430,7 +430,7 @@ void Movie::Record(const Service::HID::GyroscopeDataEntry& gyroscope_data) { void Movie::Record(const Service::IR::PadState& pad_state, const s16& c_stick_x, const s16& c_stick_y) { - ControllerState s; + ControllerState s{}; s.type = ControllerStateType::IrRst; s.ir_rst.x = c_stick_x; @@ -442,7 +442,7 @@ void Movie::Record(const Service::IR::PadState& pad_state, const s16& c_stick_x, } void Movie::Record(const Service::IR::ExtraHIDResponse& extra_hid_response) { - ControllerState s; + ControllerState s{}; s.type = ControllerStateType::ExtraHidResponse; s.extra_hid_response.battery_level.Assign(extra_hid_response.buttons.battery_level);