dtinfo/TextParser.C: coverity CID 89054; mem corruption
authorJon Trulson <jon@radscan.com>
Sat, 31 Mar 2018 20:07:28 +0000 (14:07 -0600)
committerJon Trulson <jon@radscan.com>
Sat, 31 Mar 2018 20:33:23 +0000 (14:33 -0600)
cde/programs/dtinfo/dtinfo/src/UAS/DtSR/TextParser.C
cde/programs/dtinfo/dtinfo/src/UAS/DtSR/TextParser.hh

index 9c02b128e89936f29c9b4ffaebf78ac2e7e7ffa0..000de4329d3cbfb4c25c50da6ee53c1ebc164df8 100644 (file)
@@ -252,7 +252,7 @@ StringParser::brute_force(const char* text_in, int n_of_pats,
 
 }
 
-char *
+const char *
 StringParser::project_textrun(const char* org_textrun)
 {
     if (org_textrun == NULL || *org_textrun == '\0')
@@ -325,11 +325,11 @@ StringParser::project_textrun(const char* org_textrun)
 
     ret_text << off << '\t' << len << '\n' << '\0';
 
-    string rettstr = ret_text.str();
-    return (char *)rettstr.c_str();
+    static string rettstr = ret_text.str();
+    return rettstr.c_str();
 }
 
-char *
+const char *
 StringParser::hilite(const char* text, int n, const char* pats)
 {
     char* textrun = brute_force(text, n, pats);
@@ -337,9 +337,10 @@ StringParser::hilite(const char* text, int n, const char* pats)
     if (textrun == NULL)
        return NULL;
 
-    char* prjed_textrun = project_textrun(textrun);
     delete[] textrun;
 
+    const char* prjed_textrun = project_textrun(textrun);
+
     return prjed_textrun;
 }
 
index 837f3c3665b98d831bff0d4da085cab7129bb054..1997b1882844a0b56e1b09585f2b9f2db1e0233a 100644 (file)
@@ -9,13 +9,13 @@ class StringParser {
 
 public:
 
-  static char *
+  static const char *
        hilite(const char* text, int n, const char* pats);
 
   static char *
        brute_force(const char* text, int, const char* pats, int sensitive = 0);
 
-  static char *
+  static const char *
        project_textrun(const char *);
 
 };