diff --git a/compiler2/record_of.c b/compiler2/record_of.c
index b4544edcb7efed1d8126659f58e312d323e2aa01..b5fc1ebb55f27b00de4277291ae7120598a2e84c 100644
--- a/compiler2/record_of.c
+++ b/compiler2/record_of.c
@@ -3643,13 +3643,18 @@ void defRecordOfTemplate1(const struct_of_def *sdef, output_struct *output)
 	"const Restricted_Length_Template *template_ptr,"
     " int index_value, int index_template, boolean legacy)\n"
       "{\n"
-      "if (value_ptr != NULL && template_ptr != NULL)"
-      "((const %s_template*)template_ptr)"
-      "->single_value.value_elements[index_template]"
-      "->log_match((*(const %s*)value_ptr)[index_value], legacy);\n"
-      "else if (value_ptr != NULL) (*(const %s*)value_ptr)[index_value].log();\n"
-      "else if (template_ptr != NULL) ((const %s_template*)template_ptr)"
-	"->single_value.value_elements[index_template]->log();\n"
+      "if (value_ptr == NULL) {\n"
+        "if (template_ptr != NULL) {\n"
+          "((const %s_template*)template_ptr)"
+          "->single_value.value_elements[index_template]->log();\n"
+        "}\n"
+      "} else if (template_ptr == NULL) {\n"
+        "(*(const %s*)value_ptr)[index_value].log();\n"
+      "} else {\n"
+        "((const %s_template*)template_ptr)"
+        "->single_value.value_elements[index_template]"
+        "->log_match((*(const %s*)value_ptr)[index_value], legacy);\n"
+      "}\n"
       "}\n\n", name, name, name, name, name);
   }