Răsfoiți Sursa

* get_stringconst should handle widestring correctly: library & import names are unicodestring constants in unicode rtl

Michael VAN CANNEYT 2 ani în urmă
părinte
comite
1b7bf0fe24
1 a modificat fișierele cu 14 adăugiri și 1 ștergeri
  1. 14 1
      compiler/pexpr.pas

+ 14 - 1
compiler/pexpr.pas

@@ -5001,6 +5001,11 @@ implementation
      constant. Then the constant is returned.}
     var
       p:tnode;
+      snode : tstringconstnode absolute p;
+      s : string;
+      pw : pcompilerwidestring;
+      pc : pansichar;
+
     begin
       get_stringconst:='';
       p:=comp_expr([ef_accept_equal]);
@@ -5011,8 +5016,16 @@ implementation
           else
             Message(parser_e_illegal_expression);
         end
+      else if (tstringconstnode(p).cst_type in [cst_unicodestring,cst_widestring]) then
+         begin
+         pw:=pcompilerwideString(tstringconstnode(p).value_str);
+         pc:=getmem(getlengthwidestring(pw));
+         unicode2ascii(pw,pc,current_settings.sourcecodepage);
+         get_stringconst:=strpas(pc);
+         freemem(pc);
+         end
       else
-        get_stringconst:=strpas(tstringconstnode(p).value_str);
+        get_stringconst:=strpas(snode.value_str);
       p.free;
     end;