Github user dgkimura commented on a diff in the pull request: https://github.com/apache/geode-native/pull/15#discussion_r101655637 --- Diff: src/cppcache/src/TcrMessage.hpp --- @@ -1113,12 +1117,11 @@ class TcrMessageHelper { return NULL_OBJECT; } else if (!isObj) { // otherwise we're currently always expecting an object - char exMsg[256]; - std::snprintf(exMsg, 255, - "TcrMessageHelper::readChunkPartHeader: " - "%s: part is not object", - methodName); - LOGDEBUG("%s ", exMsg); + + std::stringstream s; + s << "TcrMessageHelper::readChunkPartHeader: " << methodName << ": part is not object\n"; + LOGDEBUG("%s ", s.str().c_str()); --- End diff -- I find this line a little suspicious. If I understand correctly, `stringstream.str()` will return a temporary string object and then `c_str()` will return a pointer to that temporary object. Then it seems like it may be possible that temporary string is freed after the expression is evaluated. And then we would be referencing a freed object inside `LOGDEBUG` which would lead to undefined behavior. If I am misunderstanding then please educate me how this works and why you chose to do it! :)
--- If your project is set up for it, you can reply to this email and have your reply appear on GitHub as well. If your project does not have this feature enabled and wishes so, or if the feature is enabled but not working, please contact infrastructure at infrastruct...@apache.org or file a JIRA ticket with INFRA. ---