//===----------------------------------------------------------------------===// // // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. // See https://llvm.org/LICENSE.txt for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // //===----------------------------------------------------------------------===// // UNSUPPORTED: 32-bit-pointer // Test that tellp() does not break the stringstream after INT_MAX, due to use // of pbump() that accept int. #include #include #include #include int main(int, char**) { std::stringstream ss; std::string payload(INT_MAX - 1, '\0'); ss.write(payload.data(), payload.size()); assert(ss.tellp() == INT_MAX - 1); ss.write("a", 1); assert(ss.tellp() == INT_MAX); ss.write("b", 1); assert(ss.tellp() == INT_MAX + 1ULL); // it fails only after previous tellp() corrupts the internal field with int // overflow assert(ss.tellp() == INT_MAX + 1ULL); return 0; }