Avoid subtracting form .length

user1234 user1234 at 12.de
Thu Nov 14 17:27:54 UTC 2024


On Friday, 8 November 2024 at 23:27:40 UTC, Dom DiSc wrote:
> I _very_ often use this pattern:
>
> ```
> fun(ref int[] a)
> {
>    assert(a.length && a.length<=100);
>    int[100] b;
>    b[0 .. a.length-1] = a[];
>    b[a.length .. 100] = 5;
> }
> ```
>
> I consider this perfectly safe, but DScanner gives warnings for 
> this, no matter if a check is present or not.
> What's the recommended fix for this? I have no idea what else 
> to use.

You define a contract that Dscanner does not understand. The more 
simple solution, as you seem to be careful about bounds, is to 
disable the specific check that worries you. You can do that in 
an ".ini" file that must stand in the project root directory IIRC.


More information about the Digitalmars-d-learn mailing list