@@ -1135,9 +1135,13 @@ implementation
11351135 vs : tabstractnormalvarsym;
11361136 tcsym : tstaticvarsym;
11371137 templist : tasmlist;
1138+ i : longint;
1139+ tokenbuf : tdynamicarray;
1140+ already_recording : boolean;
11381141 begin
11391142 vs:=tabstractnormalvarsym(sc[0 ]);
1140- if sc.count>1 then
1143+ if (sc.count>1 ) and
1144+ not (m_multi_var_init in current_settings.modeswitches) then
11411145 Message(parser_e_initialized_only_one_var);
11421146 if vo_is_thread_var in vs.varoptions then
11431147 Message(parser_e_initialized_not_for_threadvar);
@@ -1156,7 +1160,11 @@ implementation
11561160 generation for LLVM) }
11571161 if not parse_generic then
11581162 begin
1159- vs.defaultconstsym:=tcsym;
1163+ for i:=0 to sc.count-1 do
1164+ begin
1165+ tabstractnormalvarsym(sc[i]).defaultconstsym:=tcsym;
1166+ tabstractnormalvarsym(sc[i]).varstate:=vs_initialised;
1167+ end ;
11601168 current_asmdata.asmlists[al_typedconsts].concatlist(templist);
11611169 end ;
11621170 templist.free;
@@ -1165,12 +1173,33 @@ implementation
11651173 staticvarsym :
11661174 begin
11671175 maybe_guarantee_record_typesym(vs.vardef,vs.vardef.owner);
1168- read_typed_const(current_asmdata.asmlists[al_typedconsts],tstaticvarsym(vs),false);
1176+ if sc.count<=1 then
1177+ read_typed_const(current_asmdata.asmlists[al_typedconsts],tstaticvarsym(vs),false)
1178+ else
1179+ begin
1180+ { record tokens so we can replay them for each variable }
1181+ already_recording:=current_scanner.is_recording_tokens;
1182+ tokenbuf:=tdynamicarray.create(256 );
1183+ if not already_recording then
1184+ current_scanner.startrecordtokens(tokenbuf);
1185+ read_typed_const(current_asmdata.asmlists[al_typedconsts],tstaticvarsym(vs),false);
1186+ if not already_recording then
1187+ current_scanner.stoprecordtokens;
1188+ for i:=1 to sc.count-1 do
1189+ begin
1190+ maybe_guarantee_record_typesym(tabstractnormalvarsym(sc[i]).vardef,tabstractnormalvarsym(sc[i]).vardef.owner);
1191+ tokenbuf.seek(0 );
1192+ current_scanner.startreplaytokens(tokenbuf,false);
1193+ read_typed_const(current_asmdata.asmlists[al_typedconsts],tstaticvarsym(sc[i]),false);
1194+ end ;
1195+ tokenbuf.free;
1196+ end ;
11691197 end ;
11701198 else
11711199 internalerror(200611051 );
11721200 end ;
1173- vs.varstate:=vs_initialised;
1201+ for i:=0 to sc.count-1 do
1202+ tabstractnormalvarsym(sc[i]).varstate:=vs_initialised;
11741203 end ;
11751204
11761205{ $ifdef gpc_mode}
0 commit comments