浏览代码

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

(cherry picked from commit 1180589046372dfb838bd87ce3f48b698853641f)
Sven/Sarah Barth 3 年之前
父节点
当前提交
d8aa721f88
共有 1 个文件被更改,包括 2 次插入0 次删除
  1. 2 0
      compiler/aasmcnst.pas

+ 2 - 0
compiler/aasmcnst.pas

@@ -352,6 +352,7 @@ type
      procedure emit_dynarray_offset(const ll:tasmlabofs;const arrlength:asizeint;const arrdef:tdef);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 }
@@ -1761,6 +1762,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;