On mIRC 6.35, "/bset &a N 0" can be used to set a much longer binvar of N bytes than the current version.

On the current version 7.68, with mIRC already using 38KB, I can 'only' get N to represent 650MB or so, on 6.35 it would be around 1.3GB.

In addition, if you find a maximum value for N that you can pass to /bset at a given time, where N+1 would fail with an error, you can in fact create a second binvar with data in it, making the first limit on the binvar uncalled for.

I don't really have a script to demonstrate this because finding the maximum N is not trivial with a script if you make it starting at 1 and increasing by 1 until it fails. Well it can take a long time, here is something I used that worked quickly for me at some point, this script can be edited to increase (and decrease) %a in the first loop by a larger number the same way the decreasing second loop is, that will give you an incorrect first maximum, but it should still illustrate that a second binvar can be created, large enough to cover the gap of the maximum of the first binvar + at least one byte more.

Note: the code is on one line because of this report: https://forums.mirc.com/ubbthreads.php/topics/270141/

Code
//var %a 440000000,%b %a | while (1) { bset &error %a 0 | inc %a } | :error | reseterror | dec %a | bunset &error | echo -ag first current max %a | bset &1 %a 0 | var %a %b | :goto | while (1) { bset &error %a 0 | echo second max %a -- echo -ag $bvar(&1,0) + $bvar(&error,0) | return } | :error | var %error $error | reseterror | if (%error) { bunset &error | dec %a 10000 | goto goto }
This code use the fact that /bset will fail to set a too large binvar, we catch the error and the maximum value it can set, we set a binvar to that size, then we assume setting a second one of that size will fail so we do a decreasing loop from the original N we tried first.

What is the reason for such a big difference compared to 6.35? Why is there some rather very low arbitrary limit for /bset when once its limit reached, a second binvar of a rather large size can still be created? Is this a regression, if not could it be improved?


#mircscripting @ irc.swiftirc.net == the best mIRC help channel