Sfoglia il codice sorgente

fcl-passrc: fixed resolve string lit on non utf-8 system

git-svn-id: trunk@47872 -
Mattias Gaertner 4 anni fa
parent
commit
1d1dce1f60

+ 9 - 3
packages/fcl-passrc/src/pasresolveeval.pas

@@ -4203,6 +4203,7 @@ var
   {$ENDIF}
   begin
     if h='' then exit;
+    //writeln('AddSrc ',length(h),' ',ord(h[1]),' ',stringcodepage(h),' ',defaultsystemcodepage);
     {$ifdef FPC_HAS_CPSTRING}
     OnlyASCII:=true;
     for i:=1 to length(h) do
@@ -4238,9 +4239,14 @@ var
         RaiseNotYetImplemented(20201220222608,Expr);
       else
         begin
-        if Value.OnlyASCII and (Value.S<>'') then
-          SetCodePage(Value.S,TargetCP,false);
-        Value.S:=Value.S+h;
+        if Value.S<>'' then
+        begin
+          if Value.OnlyASCII then
+            SetCodePage(Value.S,TargetCP,false);
+          Value.S:=Value.S+h;
+        end else begin
+          Value.S:=h;
+        end;
         end;
       end;
 

+ 1 - 2
packages/fcl-passrc/tests/tcresolver.pas

@@ -2181,6 +2181,7 @@ begin
   Result.OnFindUnit:=@OnPasResolverFindUnit;
   Result.OnLog:=@OnPasResolverLog;
   Result.Hub:=Hub;
+  Result.ExprEvaluator.DefaultStringCodePage:=CP_UTF8;
   Result.ExprEvaluator.DefaultSourceCodePage:=CP_UTF8;
   FModules.Add(Result);
 end;
@@ -14308,7 +14309,6 @@ end;
 
 procedure TTestResolver.TestStaticArrayOfChar;
 begin
-  ResolverEngine.ExprEvaluator.DefaultStringCodePage:=CP_UTF8;
   StartProgram(false);
   Add([
   'type',
@@ -14330,7 +14330,6 @@ end;
 
 procedure TTestResolver.TestStaticArrayOfCharDelphi;
 begin
-  ResolverEngine.ExprEvaluator.DefaultStringCodePage:=CP_UTF8;
   StartProgram(false);
   Add([
   '{$mode delphi}',