Fix off-by-one bugs in bmread workaround

This commit is contained in:
Kp 2014-07-02 02:29:35 +00:00
parent 6222b58bbc
commit 36685d3938

View file

@ -40,21 +40,20 @@ char *PHYSFSX_fgets(char *buf, size_t n, PHYSFS_file *const fp)
{ {
if (p == e) if (p == e)
{ {
*p = 0; std::fill(p, buf + n, 0);
break; return buf;
} }
char c = *p; char c = *p;
if (c == 0) if (c == 0)
break; break;
if (c == '\n') if (c == '\n')
{ {
*p = 0;
break; break;
} }
else if (c == '\r') else if (c == '\r')
{ {
*p = 0; *p = 0;
if (++p != e && *p == '\n') if (++p != e && *p != '\n')
--p; --p;
break; break;
} }