<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">2015-12-16 11:55 GMT+01:00 Jonas Maebe <span dir="ltr"><<a href="mailto:jonas.maebe@elis.ugent.be" target="_blank">jonas.maebe@elis.ugent.be</a>></span>:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><span class=""><br>
Santiago A. wrote on Wed, 16 Dec 2015:<br>
<br>
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
In functions blockread and blockwrite, the result parameter is "var".<br>
And in blockread buffer is also "var".<br>
<br>
Couldn't they be marked as "out" instead of "var"?.<br>
</blockquote>
<br></span>
The result parameters can be changed. The BlockRead buffer parameter cannot be changed for the same reason that the parameters of fillchar and move cannot be changed: it changes the behaviour in case a managed type, or e.g. a record or array containing managed types, it passed. With "var", nothing special happens, while with "out", they are first finalised. If they are not yet initialised at that point (e.g. because they are the result of a plain getmem), this would introduce crashes.<br>
<br>
Even though you cannot just blockread/blockwrite managed types anyway (since they are pointers), this can currently work if you ensure that all read/written managed types are nil. It may seem unlikely, but at least changing the "var" parameters of move/fillchar to "out" even caused crashes in the compiler because the RTL relies on the current behaviour (and using move/fillchar with managed types is not very common/recommended either in the general case).<span class=""></span><br></blockquote></div><br></div><div class="gmail_extra">Thank you Jonas for this answer. This has been frustrating me, at least now I have an idea why.<br><br></div><div class="gmail_extra">Now what I should do is add <span class="">{%H-} on each line containing blockread, blockwrite, fillchar and so on... This isn't so difficult, after all. The only drawback is that it could potentially hide another perfectly valid warning.<br></span></div><div class="gmail_extra"><br>-- <br><div class="gmail_signature">Frederic Da Vitoria<br>(davitof)<br><br>Membre de l'April - « promouvoir et défendre le logiciel libre » - <a href="http://www.april.org" target="_blank">http://www.april.org</a><br></div>
</div></div>