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) if (str == NULL)
return NULL; return NULL;
if (n == 0 || n == 1) if (n < 2)
return NULL; return NULL;
str[0] = '\0';
char i = 0, t = n - 1; char i = 0, t = n - 1;
bool isTruncated = false;
while ((char ch = getpch()) != '\n') while ((char ch = getpch()) != '\n')
{ {
if (i < t) if (i < t)
str[i++] = ch; str[i] = ch;
else ++i;
{
isTruncated = true;
break;
} }
} str[(i < t) ? i : t] = '\0';
str[i] = 0;
if (isTruncated) if (i > t)
return NULL; return NULL;
return str; return str;
} }