Skip to content

Commit a7fbfb8

Browse files
Fix working with UTF8 characters in the whole sdk.
1 parent 149eb1c commit a7fbfb8

File tree

4 files changed

+273
-165
lines changed

4 files changed

+273
-165
lines changed

Source/PubnubLibrary/Private/FunctionLibraries/PubnubUtilities.cpp

Lines changed: 12 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ FString UPubnubUtilities::PubnubGetLastServerHttpResponse(pubnub_t* Context)
2121
{
2222
pubnub_char_mem_block LastServerResponse;
2323
pubnub_last_http_response_body(Context, &LastServerResponse);
24-
return FString(LastServerResponse.ptr);
24+
return PubnubCharMemBlockToString(LastServerResponse);
2525
}
2626

2727
FString UPubnubUtilities::AddQuotesToString(const FString InString, bool SkipIfHasQuotes)
@@ -51,17 +51,13 @@ FString UPubnubUtilities::RemoveOuterQuotesFromString(const FString InString)
5151

5252
FString UPubnubUtilities::PubnubCharMemBlockToString(const pubnub_char_mem_block PnChar)
5353
{
54-
if(!PnChar.ptr)
54+
if (!PnChar.ptr || PnChar.size == 0)
5555
{
56-
return "";
56+
return FString();
5757
}
58-
59-
#if ENGINE_MINOR_VERSION <= 3
60-
//This constructor is deprecated since 5.4
61-
return FString(PnChar.size, PnChar.ptr);
62-
#else
63-
return FString::ConstructFromPtrSize(PnChar.ptr, PnChar.size);
64-
#endif
58+
59+
FUTF8ToTCHAR Converter(reinterpret_cast<const ANSICHAR*>(PnChar.ptr), PnChar.size);
60+
return FString(Converter.Length(), Converter.Get());
6561
}
6662

6763
FString UPubnubUtilities::MembershipIncludeToString(const FPubnubMembershipInclude& MembershipInclude)
@@ -259,13 +255,14 @@ FString UPubnubUtilities::GetAllSortToString(const FPubnubGetAllSort& GetAllIncl
259255
return FinalString;
260256
}
261257

262-
263258
pubnub_subscription_t* UPubnubUtilities::EEGetSubscriptionForChannel(pubnub_t* Context, FString Channel, FPubnubSubscribeSettings Options)
264259
{
265260
pubnub_subscription_options_t PnOptions = pubnub_subscription_options_defopts();
266261
PnOptions.receive_presence_events = Options.ReceivePresenceEvents;
267262

268-
pubnub_channel_t* PubnubChannel = pubnub_channel_alloc(Context, TCHAR_TO_ANSI(*Channel));
263+
FUTF8StringHolder ChannelHolder(Channel);
264+
265+
pubnub_channel_t* PubnubChannel = pubnub_channel_alloc(Context, ChannelHolder.Get());
269266

270267
pubnub_subscription_t* Subscription = pubnub_subscription_alloc((pubnub_entity_t*)PubnubChannel, &PnOptions);
271268

@@ -279,7 +276,9 @@ pubnub_subscription_t* UPubnubUtilities::EEGetSubscriptionForChannelGroup(pubnub
279276
pubnub_subscription_options_t PnOptions = pubnub_subscription_options_defopts();
280277
PnOptions.receive_presence_events = Options.ReceivePresenceEvents;
281278

282-
pubnub_channel_group_t* PubnubChannelGroup = pubnub_channel_group_alloc(Context, TCHAR_TO_ANSI(*ChannelGroup));
279+
FUTF8StringHolder ChannelGroupHolder(ChannelGroup);
280+
281+
pubnub_channel_group_t* PubnubChannelGroup = pubnub_channel_group_alloc(Context, ChannelGroupHolder.Get());
283282

284283
pubnub_subscription_t* Subscription = pubnub_subscription_alloc((pubnub_entity_t*)PubnubChannelGroup, &PnOptions);
285284

0 commit comments

Comments
 (0)