std::basic_string::append(char*, pos) SIGSEGV for pos == std::string::npos --------------------------------------------------------------------------
Key: STDCXX-1060 URL: https://issues.apache.org/jira/browse/STDCXX-1060 Project: C++ Standard Library Issue Type: Bug Components: 21. Strings Affects Versions: 4.2.1, 4.2.x, 4.3.x, 5.0.0 Environment: Solaris 10 and 11 Red Hat Linux, OpenSuSE Linux Sun C++ Compiler 12.1, 12.2, 12.3 Defect is independent of platform/compiler Reporter: Stefan Teleman Fix For: 4.2.2, 4.2.x, 4.3.x, 5.0.0 Attachments: test.cc std::basic_string::append(char*, pos) SIGSEGV for pos == std::string::npos: {code:title=test.cc|borderStyle=solid} #include <iostream> #include <string> #include <stdexcept> int main() { const char* c = "hello"; std::string s(5, '*'); std::string t; int ret; try { t = s.append(c, std::string::npos); } catch (std::length_error& e) { ret = 0; } catch ( ... ) { std::cerr << "wrong exception was thrown!" << std::endl; ret = 1; } std::cerr << "t: " << t.c_str() << std::endl; std::cerr << "s: " << s.c_str() << std::endl; return ret; } {code} 1. Output from GCC 4.5.0: {noformat} [steleman@darthvader][/src/steleman/programming/stdcxx-ss122/bugfixes-sunw/6889785][02/05/2012 21:56:30][2023]>> ./test-gcc t: s: ***** [steleman@darthvader][/src/steleman/programming/stdcxx-ss122/bugfixes-sunw/6889785][02/05/2012 22:04:45][2024]>> echo $status 0 {noformat} 2. Output from Sun C++ 12.2 with stlport: {noformat} [steleman@darthvader][/src/steleman/programming/stdcxx-ss122/bugfixes-sunw/6889785][02/05/2012 22:04:47][2025]>> ./test-ss122-stlport t: s: ***** [steleman@darthvader][/src/steleman/programming/stdcxx-ss122/bugfixes-sunw/6889785][02/05/2012 22:04:53][2026]>> echo $status 0 {noformat} 3. Output from Sun C++ 12.2 with our patched stdcxx: {noformat} [steleman@darthvader][/src/steleman/programming/stdcxx-ss122/bugfixes-sunw/6889785][02/05/2012 22:04:55][2027]>> ./test-ss122-stdcxx t: s: ***** [steleman@darthvader][/src/steleman/programming/stdcxx-ss122/bugfixes-sunw/6889785][02/05/2012 22:05:00][2028]>> echo $status 0 {noformat} 4. Output from Pathscale 4.0.12.1 (which did not patch stdcxx): {noformat} [steleman@darthvader][/src/steleman/programming/stdcxx-ss122/bugfixes-sunw/6889785][02/05/2012 22:05:02][2029]>> ./test-pathscale Segmentation fault (core dumped) [steleman@darthvader][/src/steleman/programming/stdcxx-ss122/bugfixes-sunw/6889785][02/05/2012 22:05:08][2030]>> echo $status 139 {noformat} Defect is in file include/string, line 874. Patch for stdcxx 4.2.1 to follow shortly. -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa For more information on JIRA, see: http://www.atlassian.com/software/jira