From 6394425ffbc0e6da51db67236da002e955f7c680 Mon Sep 17 00:00:00 2001
From: Kristof Szabados <Kristof.Szabados@ericsson.com>
Date: Mon, 6 Aug 2018 14:41:28 +0200
Subject: [PATCH] if the text and descaped_text is the same, it is enough to
 compare only one of them.

Signed-off-by: Kristof Szabados <Kristof.Szabados@ericsson.com>
---
 compiler2/enum.c | 13 ++++++++-----
 1 file changed, 8 insertions(+), 5 deletions(-)

diff --git a/compiler2/enum.c b/compiler2/enum.c
index 6ef38a072..0036af9e7 100644
--- a/compiler2/enum.c
+++ b/compiler2/enum.c
@@ -29,6 +29,7 @@
 #include "encdec.h"
 
 #include <stdlib.h>
+#include <string.h>
 
 #include "main.hh"
 #include "ttcn3/compiler.h"
@@ -268,13 +269,15 @@ void defEnumClass(const enum_def *edef, output_struct *output)
   src = mputprintf(src, "%s %s::str_to_enum(const char *str_par)\n"
     "{\n", qualified_enum_type, name);
   for (i = 0; i < edef->nElements; i++) {
-    if (edef->elements[i].text) {
-      src = mputprintf(src, "if (!strcmp(str_par, \"%s\") || !strcmp(str_par, \"%s\") || !strcmp(str_par, \"%s\")) return %s;\n"
-        "else ", edef->elements[i].text, edef->elements[i].descaped_text, edef->elements[i].dispname, edef->elements[i].name);
-    }
-    else {
+    if (!edef->elements[i].text) {
       src = mputprintf(src, "if (!strcmp(str_par, \"%s\")) return %s;\n"
         "else ", edef->elements[i].dispname, edef->elements[i].name);
+    } else if (!strcmp(edef->elements[i].text, edef->elements[i].descaped_text)) {
+      src = mputprintf(src, "if (!strcmp(str_par, \"%s\") || !strcmp(str_par, \"%s\")) return %s;\n"
+        "else ", edef->elements[i].text, edef->elements[i].dispname, edef->elements[i].name);
+    } else {
+      src = mputprintf(src, "if (!strcmp(str_par, \"%s\") || !strcmp(str_par, \"%s\") || !strcmp(str_par, \"%s\")) return %s;\n"
+        "else ", edef->elements[i].text, edef->elements[i].descaped_text, edef->elements[i].dispname, edef->elements[i].name);
     }
   }
   src = mputprintf(src, "return %s;\n"
-- 
GitLab