Fixes incorrect specification implementation not reading all the

characters.
Simplfies the buffer size checks.
This commit is contained in:
John Schneiderman 2024-09-30 20:04:33 +02:00
parent cfd2e5142a
commit ebce50320f

View File

@ -33,25 +33,19 @@ char * gets_s(char * str, size_t n)
if (str == NULL)
return NULL;
if (n == 0 || n == 1)
if (n < 2)
return NULL;
str[0] = '\0';
char i = 0, t = n - 1;
bool isTruncated = false;
while ((char ch = getpch()) != '\n')
{
if (i < t)
str[i++] = ch;
else
{
isTruncated = true;
break;
}
str[i] = ch;
++i;
}
str[i] = 0;
str[(i < t) ? i : t] = '\0';
if (isTruncated)
if (i > t)
return NULL;
return str;
}