From 8b080792240467c8df06d80cc87deeb06fca1434 Mon Sep 17 00:00:00 2001 From: florian Date: Sat, 2 Jan 2021 16:39:39 +0000 Subject: [PATCH] * fpc_AnsiStr_Concat: if one of the strings is empty and CP_NONE is passed, the code page of the other string is taken, this is also like fpc_AnsiStr_Concat_multi works if length(sarr)=2 git-svn-id: trunk@47976 - --- rtl/inc/astrings.inc | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/rtl/inc/astrings.inc b/rtl/inc/astrings.inc index b26f1708ee..5941c99fd3 100644 --- a/rtl/inc/astrings.inc +++ b/rtl/inc/astrings.inc @@ -236,12 +236,16 @@ begin S2CP:=TranslatePlaceholderCP(S2CP); {$ifdef FPC_HAS_CPSTRING} { if the result is rawbytestring and both strings have the same code page, - keep that code page } - if (cp=CP_NONE) and - (S1CP=S2CP) then - DestCP:=S1CP; + keep that code page or keep the code page if the other string is empty } + if cp=CP_NONE then + begin + if (S1CP=S2CP) or (S2='') then + DestCP:=S1CP + else if S1='' then + DestCP:=S2CP; + end; {$endif FPC_HAS_CPSTRING} - if (S1CP<>DestCP) or (S2CP<>DestCP) then + if ((S1CP<>DestCP) and (s1<>'')) or ((S2CP<>DestCP) and (s2<>'')) then begin ansistr_concat_complex(DestS,S1,S2,DestCP); exit;