diff --git a/tool/CommandRegRead.cpp b/tool/CommandRegRead.cpp
index f5b89afe717bce7a75a7dc697199976a625b2ffc..c45500567eb5cfaf5f9f052c736c4f963d6ce915 100644
--- a/tool/CommandRegRead.cpp
+++ b/tool/CommandRegRead.cpp
@@ -159,35 +159,35 @@ void CommandRegRead::execute(MasterDevice &m, const StringVector &args)
 	}
 
     cout << setfill('0');
-    if (!dataType || dataType->name == "string") {
+    if (!dataType || string(dataType->name) == "string") {
         uint16_t i;
         for (i = 0; i < data.length; i++) {
             cout << data.data[i];
         }
         if (dataType)
             cout << endl;
-    } else if (dataType->name == "int8") {
+    } else if (string(dataType->name) == "int8") {
         int val = (int) *data.data;
         cout << "0x" << hex << setw(2) << val << " " << dec << val << endl;
-    } else if (dataType->name == "int16") {
+    } else if (string(dataType->name) == "int16") {
         int16_t val = le16_to_cpup(data.data);
         cout << "0x" << hex << setw(4) << val << " " << dec << val << endl;
-    } else if (dataType->name == "int32") {
+    } else if (string(dataType->name) == "int32") {
         int32_t val = le32_to_cpup(data.data);
         cout << "0x" << hex << setw(8) << val << " " << dec << val << endl;
-    } else if (dataType->name == "int64") {
+    } else if (string(dataType->name) == "int64") {
         int64_t val = le64_to_cpup(data.data);
         cout << "0x" << hex << setw(16) << val << " " << dec << val << endl;
-    } else if (dataType->name == "uint8") {
+    } else if (string(dataType->name) == "uint8") {
         unsigned int val = (unsigned int) *data.data;
         cout << "0x" << hex << setw(2) << val << " " << dec << val << endl;
-    } else if (dataType->name == "uint16") {
+    } else if (string(dataType->name) == "uint16") {
         uint16_t val = le16_to_cpup(data.data);
         cout << "0x" << hex << setw(4) << val << " " << dec << val << endl;
-    } else if (dataType->name == "uint32") {
+    } else if (string(dataType->name) == "uint32") {
         uint32_t val = le32_to_cpup(data.data);
         cout << "0x" << hex << setw(8) << val << " " << dec << val << endl;
-    } else if (dataType->name == "uint64") {
+    } else if (string(dataType->name) == "uint64") {
         uint64_t val = le64_to_cpup(data.data);
         cout << "0x" << hex << setw(16) << val << " " << dec << val << endl;
     } else { // raw
diff --git a/tool/CommandRegWrite.cpp b/tool/CommandRegWrite.cpp
index 31484ca3f8118f647d01022cd6f94a5fdf2ba35e..21a4586613b7506b2a7fc1ae8766961a7a6325ed 100644
--- a/tool/CommandRegWrite.cpp
+++ b/tool/CommandRegWrite.cpp
@@ -132,44 +132,44 @@ void CommandRegWrite::execute(MasterDevice &m, const StringVector &args)
 		strValue.exceptions(ios::failbit);
 
 		try {
-			if (dataType->name == "int8") {
+			if (string(dataType->name) == "int8") {
 				int16_t val; // uint8_t is interpreted as char
 				strValue >> val;
 				if (val > 127 || val < -128)
 					throw ios::failure("Value out of range");
 				*data.data = (int8_t) val;
-			} else if (dataType->name == "int16") {
+			} else if (string(dataType->name) == "int16") {
 				int16_t val;
 				strValue >> val;
 				*(int16_t *) data.data = cpu_to_le16(val);
-			} else if (dataType->name == "int32") {
+			} else if (string(dataType->name) == "int32") {
 				int32_t val;
 				strValue >> val;
 				*(int32_t *) data.data = cpu_to_le32(val);
-			} else if (dataType->name == "int64") {
+			} else if (string(dataType->name) == "int64") {
 				int64_t val;
 				strValue >> val;
 				*(int64_t *) data.data = cpu_to_le64(val);
-			} else if (dataType->name == "uint8") {
+			} else if (string(dataType->name) == "uint8") {
 				uint16_t val; // uint8_t is interpreted as char
 				strValue >> val;
 				if (val > 0xff)
 					throw ios::failure("Value out of range");
 				*data.data = (uint8_t) val;
-			} else if (dataType->name == "uint16") {
+			} else if (string(dataType->name) == "uint16") {
 				uint16_t val;
 				strValue >> val;
 				*(uint16_t *) data.data = cpu_to_le16(val);
-			} else if (dataType->name == "uint32") {
+			} else if (string(dataType->name) == "uint32") {
 				uint32_t val;
 				strValue >> val;
 				*(uint32_t *) data.data = cpu_to_le32(val);
-			} else if (dataType->name == "uint64") {
+			} else if (string(dataType->name) == "uint64") {
 				uint64_t val;
 				strValue >> val;
 				*(uint64_t *) data.data = cpu_to_le64(val);
-			} else if (dataType->name == "string" ||
-					dataType->name == "octet_string") {
+			} else if (string(dataType->name) == "string" ||
+					string(dataType->name) == "octet_string") {
 				data.length = strValue.str().size();
 				if (!data.length) {
 					err << "Zero-size string now allowed!";