ack, review only/Thanks HansN

On 06/08/2018 05:12 AM, Gary Lee wrote:
If trace is enabled after the last TRACE() statement is run, but
*before* ~Trace() is called, then _file is left as nullptr when
logtrace_output() is called in ~Trace(). This will segfault.
---
  src/base/logtrace.h | 10 +++++++---
  1 file changed, 7 insertions(+), 3 deletions(-)

diff --git a/src/base/logtrace.h b/src/base/logtrace.h
index 9b20da82d..69379766e 100644
--- a/src/base/logtrace.h
+++ b/src/base/logtrace.h
@@ -175,7 +175,11 @@ extern void log_output(const char *file, unsigned line, 
unsigned priority,
class Trace {
   public:
-  Trace() {}
+  Trace() = delete;
+  Trace(const char *file, const char *function) {
+    file_ = file;
+    function_ = function;
+  }
    ~Trace() {
      if (!trace_leave_called && is_logtrace_enabled(CAT_TRACE_LEAVE)) {
        va_list ap{};
@@ -212,11 +216,11 @@ class Trace {
  };
#define TRACE_ENTER() \
-  Trace t_;                                                          \
+  Trace t_(__FILE__, __FUNCTION__); \
    t_.trace(__FILE__, __FUNCTION__, __LINE__, CAT_TRACE_ENTER, "%s ", \
             __FUNCTION__)
  #define TRACE_ENTER2(format, args...)                                        \
-  Trace t_;                                                                  \
+  Trace t_(__FILE__, __FUNCTION__); \
    t_.trace(__FILE__, __FUNCTION__, __LINE__, CAT_TRACE_ENTER, "%s: " format, \
             __FUNCTION__, ##args)


------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
Opensaf-devel mailing list
Opensaf-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/opensaf-devel

Reply via email to