-
Notifications
You must be signed in to change notification settings - Fork 1.6k
Open
Labels
bugSomething isn't workingSomething isn't workingvNextBreaks binary compatibilityBreaks binary compatibility
Description
std::basic_streambuf doesn't support 64-bit properly, because it holds the counters in 32-bit ints:
Lines 392 to 395 in b614834
| int _Gcount; // length of read buffer | |
| int _Pcount; // length of write buffer | |
| int* _IGcount; // pointer to length of read buffer | |
| int* _IPcount; // pointer to length of write buffer |
Then e.g. in std::basic_streambuf::setg(...) you have:
Line 210 in b614834
| *_IGcount = static_cast<int>(_Last - _Next); |
and forcing a cast to int prevents from using with a memory range bigger than ~2GB (even on Win64 builds).
Also tracked by DevCom-102668, DevCom-290124, DevCom-320893, DevCom-859581, and Microsoft-internal VSO-485517 / AB#485517.
vNext note: Resolving this issue will require breaking binary compatibility. We won't be able to accept pull requests for this issue until the vNext branch is available. See #169 for more information.
Metadata
Metadata
Assignees
Labels
bugSomething isn't workingSomething isn't workingvNextBreaks binary compatibilityBreaks binary compatibility