summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--qpid/cpp/src/qpid/log/Statement.cpp10
1 files changed, 7 insertions, 3 deletions
diff --git a/qpid/cpp/src/qpid/log/Statement.cpp b/qpid/cpp/src/qpid/log/Statement.cpp
index d70dbc501a..86b069fd91 100644
--- a/qpid/cpp/src/qpid/log/Statement.cpp
+++ b/qpid/cpp/src/qpid/log/Statement.cpp
@@ -153,17 +153,21 @@ Statement::Initializer::Initializer(Statement& s) : statement(s) {
// "qpid::name::space::Function".
if (s.function) {
const char* end = s.function + strlen(s.function);
- const char* fEnd = std::find(s.function, end, '(');
+ const char* fEnd = std::find(s.function, end, '(');
typedef std::reverse_iterator<const char*> Reverse;
const char* fBegin = find(Reverse(fEnd), Reverse(s.function), ' ').base();
- s.function = ::strndup(fBegin, fEnd-fBegin);
+ size_t n = fEnd - fBegin;
+ char* name = new char[n+1];
+ std::copy(fBegin, fEnd, name);
+ name[n] = '\0';
+ s.function = name;
}
Statement::categorize(s);
Logger::instance().add(s);
}
Statement::Initializer::~Initializer() {
- ::free(const_cast<char*>(statement.function));
+ delete[] const_cast<char*>(statement.function);
statement.function = 0;
}