Branch: refs/heads/master Home: https://github.com/xrootd/xrootd Commit: 1e4d313b325ac2227643b8a5ece767bdf4711f2f https://github.com/xrootd/xrootd/commit/1e4d313b325ac2227643b8a5ece767bdf4711f2f Author: Mattias Ellert <[log in to unmask]> Date: 2020-12-20 (Sun, 20 Dec 2020) Changed paths: M src/XrdCms/XrdCmsRedirLocal.cc Log Message: ----------- Don't save pointer to temporary The c_str() of a temporary std::string object is not valid after the lifetime of the object expires. Consider: $ cat temp.cpp int main() { const char* c1 = std::string("ABC").c_str(); const char* c2 = std::string("DEF").c_str(); std::cout << c1 << std::endl; std::cout << c2 << std::endl; } $ g++ -O2 -o temp temp.cpp $ ./temp DEF DEF The memory used by the first temporary std::string is reused by the second one, since the lifetime of the first has expired. So when the saved c_str() of the first string is written out, it writes the second string. Commit: 24b89dbf91dbf170a1f97fd21825c9f332dd1d6a https://github.com/xrootd/xrootd/commit/24b89dbf91dbf170a1f97fd21825c9f332dd1d6a Author: Andrew Hanushevsky <[log in to unmask]> Date: 2020-12-21 (Mon, 21 Dec 2020) Changed paths: M src/XrdCms/XrdCmsRedirLocal.cc Log Message: ----------- Merge pull request #1368 from ellert/no-save-pointer-to-temporary Don't save pointer to temporary Compare: https://github.com/xrootd/xrootd/compare/0dcc70d8cd3f...24b89dbf91db ######################################################################## Use REPLY-ALL to reply to list To unsubscribe from the XROOTD-DEV list, click the following link: https://listserv.slac.stanford.edu/cgi-bin/wa?SUBED1=XROOTD-DEV&A=1