msvcrt: Handle negative file->_cnt value in _flsbuf function.

This commit is contained in:
Piotr Caban 2012-02-07 10:14:03 +01:00 committed by Alexandre Julliard
parent 9d538e43be
commit c39793087d
2 changed files with 14 additions and 3 deletions

View File

@ -3088,7 +3088,7 @@ int CDECL MSVCRT__flsbuf(int c, MSVCRT_FILE* file)
if(file->_bufsiz) {
int res = 0;
if(file->_cnt == 0)
if(file->_cnt <= 0)
res = msvcrt_flush_buffer(file);
if(!res) {
*file->_ptr++ = c;

View File

@ -544,10 +544,21 @@ static void test_flsbuf( void )
bufmodes[bufmode], 0, ret);
ret = _flsbuf(0xff,tempfh);
ok(0xff == ret, "_flsbuf(0xff,tempfh) with bufmode %x expected %x got %x\n",
bufmodes[bufmode], 0, ret);
bufmodes[bufmode], 0xff, ret);
ret = _flsbuf(0xffffffff,tempfh);
ok(0xff == ret, "_flsbuf(0xffffffff,tempfh) with bufmode %x expected %x got %x\n",
bufmodes[bufmode], 0, ret);
bufmodes[bufmode], 0xff, ret);
if(tempfh->_base) {
fputc('x', tempfh);
tempfh->_cnt = -1;
tempfh->_base[1] = 'a';
ret = _flsbuf(0xab,tempfh);
ok(ret == 0xab, "_flsbuf(0xab,tempfh) with bufmode %x expected 0xab got %x\n",
bufmodes[bufmode], ret);
ok(tempfh->_base[1] == 'a', "tempfh->_base[1] should not be changed (%d)\n",
tempfh->_base[1]);
}
fclose(tempfh);
}