csnd_snd: Get rid of type punning
This commit is contained in:
parent
7c12ee9ecc
commit
a1bd909294
1 changed files with 13 additions and 12 deletions
|
@ -2,6 +2,7 @@
|
||||||
// Licensed under GPLv2 or any later version
|
// Licensed under GPLv2 or any later version
|
||||||
// Refer to the license.txt file included.
|
// Refer to the license.txt file included.
|
||||||
|
|
||||||
|
#include <cstring>
|
||||||
#include "core/hle/hle.h"
|
#include "core/hle/hle.h"
|
||||||
#include "core/hle/kernel/mutex.h"
|
#include "core/hle/kernel/mutex.h"
|
||||||
#include "core/hle/kernel/shared_memory.h"
|
#include "core/hle/kernel/shared_memory.h"
|
||||||
|
@ -52,18 +53,18 @@ void Initialize(Service::Interface* self) {
|
||||||
}
|
}
|
||||||
|
|
||||||
void ExecuteType0Commands(Service::Interface* self) {
|
void ExecuteType0Commands(Service::Interface* self) {
|
||||||
u32* cmd_buff = Kernel::GetCommandBuffer();
|
u32* const cmd_buff = Kernel::GetCommandBuffer();
|
||||||
|
u8* const ptr = shared_memory->GetPointer(cmd_buff[1]);
|
||||||
|
|
||||||
|
if (shared_memory != nullptr && ptr != nullptr) {
|
||||||
|
Type0Command command;
|
||||||
|
std::memcpy(&command, ptr, sizeof(Type0Command));
|
||||||
|
|
||||||
if (shared_memory != nullptr) {
|
|
||||||
struct Type0Command* command = reinterpret_cast<struct Type0Command*>(
|
|
||||||
shared_memory->GetPointer(cmd_buff[1]));
|
|
||||||
if (command == nullptr) {
|
|
||||||
cmd_buff[1] = 1;
|
|
||||||
}else{
|
|
||||||
LOG_WARNING(Service, "(STUBBED) CSND_SND::ExecuteType0Commands");
|
LOG_WARNING(Service, "(STUBBED) CSND_SND::ExecuteType0Commands");
|
||||||
command->finished |= 1;
|
command.finished |= 1;
|
||||||
cmd_buff[1] = 0;
|
cmd_buff[1] = 0;
|
||||||
}
|
|
||||||
|
std::memcpy(ptr, &command, sizeof(Type0Command));
|
||||||
} else {
|
} else {
|
||||||
cmd_buff[1] = 1;
|
cmd_buff[1] = 1;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue