diff --git a/attn/attn_handler.cpp b/attn/attn_handler.cpp
index 747f9d6..f8d0a21 100644
--- a/attn/attn_handler.cpp
+++ b/attn/attn_handler.cpp
@@ -74,7 +74,7 @@
 
             // The processor FSI target is required for CFAM read
             char path[16];
-            sprintf(path, "/proc%d/fsi", proc);
+            sprintf(path, "/proc%d/fsi", (int)proc);
             pdbg_target* attnTarget = pdbg_target_from_path(nullptr, path);
 
             if (PDBG_TARGET_ENABLED == pdbg_target_probe(attnTarget))
@@ -90,7 +90,7 @@
                 }
                 else
                 {
-                    std::stringstream ss; // log message stream
+                    ss.str(std::string()); // clear stream
                     ss << "cfam 0x1007 = 0x";
                     ss << std::hex << std::setw(8) << std::setfill('0');
                     ss << isr_val;
@@ -111,7 +111,7 @@
                         // corresponding to attentions that can generate an
                         // attention interrupt.
 
-                        std::stringstream ss; // log message stream
+                        ss.str(std::string()); // clear stream
                         ss << "cfam 0x100d = 0x";
                         ss << std::hex << std::setw(8) << std::setfill('0');
                         ss << isr_mask;
diff --git a/attn/attn_logging.cpp b/attn/attn_logging.cpp
index d802437..014fc96 100644
--- a/attn/attn_logging.cpp
+++ b/attn/attn_logging.cpp
@@ -68,7 +68,7 @@
                       i_additional, ffdcTuples);
 
         // log the event
-        auto reply = bus.call(method);
+        bus.call_noreply(method);
     }
 }
 
diff --git a/attn/ti_handler.cpp b/attn/ti_handler.cpp
index eee3553..6c3f26c 100644
--- a/attn/ti_handler.cpp
+++ b/attn/ti_handler.cpp
@@ -243,6 +243,10 @@
 void parseRawTiInfo(std::map<std::string, std::string>& i_map,
                     TiDataArea* i_buffer)
 {
+    if (nullptr == i_buffer)
+    {
+        return;
+    }
 
     uint32_t* tiDataArea = (uint32_t*)i_buffer;
     std::stringstream ss;
@@ -269,6 +273,11 @@
 void parsePhypOpalTiInfo(std::map<std::string, std::string>& i_map,
                          TiDataArea* i_tiDataArea)
 {
+    if (nullptr == i_tiDataArea)
+    {
+        return;
+    }
+
     std::stringstream ss;
 
     ss << std::hex << std::showbase;
@@ -317,6 +326,11 @@
 void parseHbTiInfo(std::map<std::string, std::string>& i_map,
                    TiDataArea* i_tiDataArea)
 {
+    if (nullptr == i_tiDataArea)
+    {
+        return;
+    }
+
     std::stringstream ss;
 
     ss << std::hex << std::showbase;
diff --git a/listener.cpp b/listener.cpp
index 5360d81..9d3a05a 100644
--- a/listener.cpp
+++ b/listener.cpp
@@ -14,13 +14,6 @@
 /** @brief end of command line args message */
 static const char* msg_send_end = "999999999999999";
 
-/** @brief structure for holding main args (for threads) */
-typedef struct
-{
-    int argc;
-    char** argv;
-} MainArgs_t;
-
 /**
  * @brief Start a thread to monitor the attention GPIO
  *
@@ -89,10 +82,8 @@
             // convert messages to command line arguments
             std::vector<char*> argv;
 
-            for (const auto& arg : messages)
-            {
-                argv.push_back((char*)arg.data());
-            }
+            std::transform(messages.begin(), messages.end(),
+                           std::back_inserter(argv), (char*)data());
 
             int argc = argv.size();
             argv.push_back(nullptr);
