Procházet zdrojové kódy

* Do not set strval for unicode strings in tc_emit_stringdef

Michaël Van Canneyt před 4 měsíci
rodič
revize
6ba102ee57
1 změnil soubory, kde provedl 5 přidání a 1 odebrání
  1. 5 1
      compiler/ngtcon.pas

+ 5 - 1
compiler/ngtcon.pas

@@ -506,7 +506,11 @@ function get_next_varsym(def: tabstractrecorddef; const SymList:TFPHashObjectLis
                (node.nodetype=stringconstn) then
                (node.nodetype=stringconstn) then
               begin
               begin
                 strlength:=tstringconstnode(node).len;
                 strlength:=tstringconstnode(node).len;
-                strval:=tstringconstnode(node).asconstpchar;
+                if (tstringconstnode(node).cst_type in [cst_unicodestring,cst_widestring]) then
+                  { further on, tstringconstnode(node).valuews is used directly for this case }
+                  strval:=nil
+                else
+                  strval:=tstringconstnode(node).asconstpchar;
                 { the def may have changed from e.g. RawByteString to
                 { the def may have changed from e.g. RawByteString to
                   AnsiString(CP_ACP) }
                   AnsiString(CP_ACP) }
                 if node.resultdef.typ=stringdef then
                 if node.resultdef.typ=stringdef then