msvcrt: Handle negative file->_cnt value in _flsbuf function.
This commit is contained in:
parent
9d538e43be
commit
c39793087d
|
@ -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;
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue