You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Describe the bug
When calling ClearPresence on an active client. An error is logged. This is definitely a bug. Interestingly, the rich presence status is successfully cleared from Discord despite this error.
To Reproduce
Steps to reproduce the behavior:
Set a presence with client.SetPresence(new RichPresence(){})
Clear this presence with client.ClearPresence()
Observe the discord status clearing but an error also being logged
This error only seems to happen if there's an existing presence. If one was never set, ClearPresence. Also, if one was cleared already, calling ClearPresence again doesn't log the error a second time.
Expected behavior
The status is cleared but without logging an error.
Additional context
In case it matters, it's worth noting that my project is using the null safety feature of C# by having <Nullable>enable</Nullable> inside of the main PropertyGroup of the .csproj file.
Logs
2021-08-28 23:27:57,385 [Discord IPC Thread] ERROR - Unhandled Exception while processing event: System.NullReferenceException
2021-08-28 23:27:57,387 [Discord IPC Thread] ERROR - Object reference not set to an instance of an object.
2021-08-28 23:27:57,387 [Discord IPC Thread] ERROR - at DiscordRPC.RichPresence.Merge(BaseRichPresence presence)
at DiscordRPC.DiscordRpcClient.ProcessMessage(IMessage message)
at DiscordRPC.DiscordRpcClient.<.ctor>b__103_0(Object sender, IMessage msg)
at DiscordRPC.RPC.RpcConnection.EnqueueMessage(IMessage message)
The text was updated successfully, but these errors were encountered:
The exception is caused by the if statements (starting at DiscordRpcClient.cs:303) not accounting for CurrentPresence == null && pm.Presence == null. This leads to RichPresence.Merge(BaseRichPresence) being called, which just assumes that the argument is not null.
Exchanging the if and else if checks (i.e. testing for pm.Presence == null first) should prevent the NRE from happening.
Though, the fact that line 486 nulls CurrentPresence, which results in CurrentPresence being set to nulltwice (first in DiscordRpcClient.SetPresence(RichPresence) and then in DiscordRpcClient.ProcessMessage(IMessage)), suggests, that maybe there was some kind of planning mistake and the whole algorithm should be revised. 🤷
Describe the bug
When calling ClearPresence on an active client. An error is logged. This is definitely a bug. Interestingly, the rich presence status is successfully cleared from Discord despite this error.
To Reproduce
Steps to reproduce the behavior:
client.SetPresence(new RichPresence(){})
client.ClearPresence()
This error only seems to happen if there's an existing presence. If one was never set,
ClearPresence
. Also, if one was cleared already, callingClearPresence
again doesn't log the error a second time.Expected behavior
The status is cleared but without logging an error.
Desktop:
Additional context
In case it matters, it's worth noting that my project is using the null safety feature of C# by having
<Nullable>enable</Nullable>
inside of the mainPropertyGroup
of the .csproj file.Logs
The text was updated successfully, but these errors were encountered: