From 00ef8a12d8337b01d72edcdabd40d4495b142317 Mon Sep 17 00:00:00 2001 From: williamdolke Date: Wed, 1 Nov 2023 23:11:40 +0000 Subject: [PATCH] Fix for DDXMLNode XMLStringWithOptions crash - issue #105 and #113 --- Core/XMPPStream.m | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/Core/XMPPStream.m b/Core/XMPPStream.m index 6d11695ade..a60dcd8b5c 100644 --- a/Core/XMPPStream.m +++ b/Core/XMPPStream.m @@ -523,17 +523,18 @@ - (XMPPPresence *)myPresence { if (dispatch_get_specific(xmppQueueTag)) { - return myPresence; + XMPPPresence *myPresenceCopy = [myPresence copy]; + return myPresenceCopy; } else { - __block XMPPPresence *result; + __block XMPPPresence *myPresenceCopy; dispatch_sync(xmppQueue, ^{ - result = self->myPresence; + myPresenceCopy = [self->myPresence copy]; }); - return result; + return myPresenceCopy; } } @@ -2455,14 +2456,16 @@ - (void)sendPresence:(XMPPPresence *)presence withTag:(long)tag }}); } - if (modifiedPresence) + __block XMPPPresence *modifiedPresenceCopy = [modifiedPresence copy]; + + if (modifiedPresenceCopy) { dispatch_async(self->xmppQueue, ^{ @autoreleasepool { if (self->state == STATE_XMPP_CONNECTED) { - [self continueSendPresence:modifiedPresence withTag:tag]; + [self continueSendPresence:modifiedPresenceCopy withTag:tag]; } else { - [self failToSendPresence:modifiedPresence]; + [self failToSendPresence:modifiedPresenceCopy]; } }}); }