mirror of
https://github.com/cemu-project/Cemu.git
synced 2024-11-26 02:54:17 +01:00
FPD: Fix a crash due to incorrect instantiation
This commit is contained in:
parent
2959802ae2
commit
c440ecdf36
@ -173,7 +173,7 @@ namespace iosu
|
|||||||
return t;
|
return t;
|
||||||
}
|
}
|
||||||
|
|
||||||
void NexPresenceToGameMode(nexPresenceV2* presence, GameMode* gameMode)
|
void NexPresenceToGameMode(const nexPresenceV2* presence, GameMode* gameMode)
|
||||||
{
|
{
|
||||||
memset(gameMode, 0, sizeof(GameMode));
|
memset(gameMode, 0, sizeof(GameMode));
|
||||||
gameMode->joinFlagMask = presence->joinFlagMask;
|
gameMode->joinFlagMask = presence->joinFlagMask;
|
||||||
@ -185,9 +185,9 @@ namespace iosu
|
|||||||
memcpy(gameMode->appSpecificData, presence->appSpecificData, 0x14);
|
memcpy(gameMode->appSpecificData, presence->appSpecificData, 0x14);
|
||||||
}
|
}
|
||||||
|
|
||||||
void GameModeToNexPresence(GameMode* gameMode, nexPresenceV2* presence)
|
void GameModeToNexPresence(const GameMode* gameMode, nexPresenceV2* presence)
|
||||||
{
|
{
|
||||||
memset(presence, 0, sizeof(nexPresenceV2));
|
*presence = {};
|
||||||
presence->joinFlagMask = gameMode->joinFlagMask;
|
presence->joinFlagMask = gameMode->joinFlagMask;
|
||||||
presence->joinAvailability = (uint8)(uint32)gameMode->matchmakeType;
|
presence->joinAvailability = (uint8)(uint32)gameMode->matchmakeType;
|
||||||
presence->gameId = gameMode->joinGameId;
|
presence->gameId = gameMode->joinGameId;
|
||||||
@ -197,7 +197,7 @@ namespace iosu
|
|||||||
memcpy(presence->appSpecificData, gameMode->appSpecificData, 0x14);
|
memcpy(presence->appSpecificData, gameMode->appSpecificData, 0x14);
|
||||||
}
|
}
|
||||||
|
|
||||||
void NexFriendToFPDFriendData(FriendData* friendData, nexFriend* frd)
|
void NexFriendToFPDFriendData(const nexFriend* frd, FriendData* friendData)
|
||||||
{
|
{
|
||||||
memset(friendData, 0, sizeof(FriendData));
|
memset(friendData, 0, sizeof(FriendData));
|
||||||
// setup friend data
|
// setup friend data
|
||||||
@ -232,7 +232,7 @@ namespace iosu
|
|||||||
convertFPDTimestampToDate(frd->lastOnlineTimestamp, &friendData->friendExtraData.lastOnline);
|
convertFPDTimestampToDate(frd->lastOnlineTimestamp, &friendData->friendExtraData.lastOnline);
|
||||||
}
|
}
|
||||||
|
|
||||||
void NexFriendRequestToFPDFriendData(FriendData* friendData, nexFriendRequest* frdReq, bool isIncoming)
|
void NexFriendRequestToFPDFriendData(const nexFriendRequest* frdReq, bool isIncoming, FriendData* friendData)
|
||||||
{
|
{
|
||||||
memset(friendData, 0, sizeof(FriendData));
|
memset(friendData, 0, sizeof(FriendData));
|
||||||
// setup friend data
|
// setup friend data
|
||||||
@ -282,7 +282,7 @@ namespace iosu
|
|||||||
convertFPDTimestampToDate(frdReq->message.expireTimestamp, &friendData->requestExtraData.uknData1);
|
convertFPDTimestampToDate(frdReq->message.expireTimestamp, &friendData->requestExtraData.uknData1);
|
||||||
}
|
}
|
||||||
|
|
||||||
void NexFriendRequestToFPDFriendRequest(FriendRequest* friendRequest, nexFriendRequest* frdReq, bool isIncoming)
|
void NexFriendRequestToFPDFriendRequest(const nexFriendRequest* frdReq, bool isIncoming, FriendRequest* friendRequest)
|
||||||
{
|
{
|
||||||
memset(friendRequest, 0, sizeof(FriendRequest));
|
memset(friendRequest, 0, sizeof(FriendRequest));
|
||||||
|
|
||||||
@ -1007,7 +1007,7 @@ namespace iosu
|
|||||||
cemuLog_log(LogType::Force, "GetFriendRequestListEx: Failed to get friend request");
|
cemuLog_log(LogType::Force, "GetFriendRequestListEx: Failed to get friend request");
|
||||||
return FPResult_RequestFailed;
|
return FPResult_RequestFailed;
|
||||||
}
|
}
|
||||||
NexFriendRequestToFPDFriendRequest(friendRequests + i, &frdReq, incoming);
|
NexFriendRequestToFPDFriendRequest(&frdReq, incoming, friendRequests + i);
|
||||||
}
|
}
|
||||||
return FPResult_Ok;
|
return FPResult_Ok;
|
||||||
}
|
}
|
||||||
@ -1063,13 +1063,13 @@ namespace iosu
|
|||||||
nexFriendRequest frdReq;
|
nexFriendRequest frdReq;
|
||||||
if (g_fpd.nexFriendSession->getFriendByPID(frd, pid))
|
if (g_fpd.nexFriendSession->getFriendByPID(frd, pid))
|
||||||
{
|
{
|
||||||
NexFriendToFPDFriendData(friendData, &frd);
|
NexFriendToFPDFriendData(&frd, friendData);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
bool incoming = false;
|
bool incoming = false;
|
||||||
if (g_fpd.nexFriendSession->getFriendRequestByPID(frdReq, &incoming, pid))
|
if (g_fpd.nexFriendSession->getFriendRequestByPID(frdReq, &incoming, pid))
|
||||||
{
|
{
|
||||||
NexFriendRequestToFPDFriendData(friendData, &frdReq, incoming);
|
NexFriendRequestToFPDFriendData(&frdReq, incoming, friendData);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
cemuLog_logDebug(LogType::Force, "GetFriendListEx: Failed to find friend or request with pid {}", pid);
|
cemuLog_logDebug(LogType::Force, "GetFriendListEx: Failed to find friend or request with pid {}", pid);
|
||||||
|
@ -17,6 +17,8 @@ public:
|
|||||||
class nexType
|
class nexType
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
|
virtual ~nexType(){};
|
||||||
|
|
||||||
virtual const char* getMetaName()
|
virtual const char* getMetaName()
|
||||||
{
|
{
|
||||||
cemu_assert_unimplemented();
|
cemu_assert_unimplemented();
|
||||||
|
Loading…
Reference in New Issue
Block a user