in src/Microsoft.Diagnostics.Runtime/src/Extensions/UnixDataReaderExtensions.cs [47:95]
private static VersionInfo ParseAsciiVersion(ReadOnlySpan<byte> span)
{
int major = 0, minor = 0, rev = 0, patch = 0;
int position = 0;
long curr = 0;
for (int i = 0; ; i++)
{
if (i == span.Length || span[i] == '.' || span[i] == ' ')
{
switch (position)
{
case 0:
major = (int)curr;
break;
case 1:
minor = (int)curr;
break;
case 2:
rev = (int)curr;
break;
case 3:
patch = (int)curr;
break;
}
curr = 0;
if (i == span.Length)
break;
if (++position == 4 || span[i] == ' ')
break;
}
// skip bits like "-beta"
if ('0' <= span[i] && span[i] <= '9')
curr = curr * 10 + (span[i] - '0');
// In this case I don't know what we are parsing but it's not a version
if (curr > int.MaxValue)
return default;
}
return new VersionInfo(major, minor, rev, patch, true);
}