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.
---

Reply via email to