Browse Source

* free the placeholder for the count of the dynamic array in end_dynarray_const() and document it as such

Sven/Sarah Barth 3 years ago
parent
commit
1180589046
1 changed files with 2 additions and 0 deletions
  1. 2 0
      compiler/aasmcnst.pas

+ 2 - 0
compiler/aasmcnst.pas

@@ -359,6 +359,7 @@ type
      procedure emit_dynarray_offset(const ll:tasmlabofs;const arrlength:asizeint;const arrdef:tarraydef; const arrconstdatadef: trecorddef);virtual;
      { starts a dynamic array constant so that its data can be emitted directly afterwards }
      function begin_dynarray_const(arrdef:tdef;var startlab:tasmlabel;out arrlengthloc:ttypedconstplaceholder):tasmlabofs;virtual;
+     { ends a dynamic array constant by updating the count field; the arrlengthloc will be freed }
      function end_dynarray_const(arrdef:tdef;arrlength:asizeint;arrlengthloc:ttypedconstplaceholder):tdef;virtual;
 
      { emit a shortstring constant, and return its def }
@@ -1803,6 +1804,7 @@ implementation
      begin
        { we emit the high value, not the count }
        arrlengthloc.replace(tai_const.Create_sizeint(arrlength-1),sizesinttype);
+       arrlengthloc.free;
        result:=end_anonymous_record;
      end;