On Wednesday, 26 October 2016 at 15:02:28 UTC, Stefam Koch wrote:
Who can guess what this code does ?
char[] obfuscatedFn(string a, string b, uint aLength = 0, uint
bLength = 0, uint cLength = 0, uint pos = 0, uint bPos = 0,
char[] result = [])
{
aLength = cast(uint)a.length;
bLength = cast(uint)a.length;
cLength = aLength + bLength;
result.length = cLength;
while(aLength--)
{
result[pos] = a[pos];
++pos;
}
while(bLength--)
{
result[pos] = b[bPos++];
++pos;
}
return result;
}
Shouldn't
cLength = aLength + bLength;
actually be
cLength = aLength + bLength + pos;
?
Otherwise when pos is > 0 it writes past the end of result.
Same problem in the first and second loop, where the legths
should probably be
aLength = cast(uint)a.length - pos;
bLength = cast(uint)a.length - bPos;
If you fix the a and b Length then cLength is fine.
Or am I missing something?