changeset 39d8a2197b77 in /z/repo/m5
details: http://repo.m5sim.org/m5?cmd=changeset;node=39d8a2197b77
description:
        slicc: work around improper initialization of a global in slicc.

diffstat:

3 files changed, 9 insertions(+), 5 deletions(-)
src/mem/slicc/ast/Location.cc  |    8 ++++++--
src/mem/slicc/ast/Location.hh  |    2 +-
src/mem/slicc/parser/parser.yy |    4 ++--

diffs (54 lines):

diff -r 0e8d74461d51 -r 39d8a2197b77 src/mem/slicc/ast/Location.cc
--- a/src/mem/slicc/ast/Location.cc     Tue May 12 22:33:04 2009 -0700
+++ b/src/mem/slicc/ast/Location.cc     Tue May 12 22:33:05 2009 -0700
@@ -39,11 +39,15 @@
 #include "mem/slicc/ast/Location.hh"
 
 int g_line_number = 0;
-string g_file_name("");
+string &g_file_name()
+{
+    static string the_string;
+    return the_string;
+}
 
 Location::Location()
 {
-  m_file_name = g_file_name;
+  m_file_name = g_file_name();
   m_line_number = g_line_number;
 
   ostringstream sstr;
diff -r 0e8d74461d51 -r 39d8a2197b77 src/mem/slicc/ast/Location.hh
--- a/src/mem/slicc/ast/Location.hh     Tue May 12 22:33:04 2009 -0700
+++ b/src/mem/slicc/ast/Location.hh     Tue May 12 22:33:05 2009 -0700
@@ -42,7 +42,7 @@
 #include "mem/slicc/slicc_global.hh"
 
 extern int g_line_number;
-extern string g_file_name;
+extern string &g_file_name();
 
 class Location {
 public:
diff -r 0e8d74461d51 -r 39d8a2197b77 src/mem/slicc/parser/parser.yy
--- a/src/mem/slicc/parser/parser.yy    Tue May 12 22:33:04 2009 -0700
+++ b/src/mem/slicc/parser/parser.yy    Tue May 12 22:33:05 2009 -0700
@@ -337,7 +337,7 @@
     exit(1);
   }
   g_line_number = 1;
-  g_file_name = filename;
+  g_file_name() = filename;
   yyin = file;
   g_decl_list_ptr = NULL;
   yyparse();
@@ -346,7 +346,7 @@
 
 extern "C" void yyerror(char* s)
 {
-  fprintf(stderr, "%s:%d: %s at %s\n", g_file_name.c_str(), g_line_number, s, 
yytext);
+  fprintf(stderr, "%s:%d: %s at %s\n", g_file_name().c_str(), g_line_number, 
s, yytext);
   exit(1);
 }
 
_______________________________________________
m5-dev mailing list
[email protected]
http://m5sim.org/mailman/listinfo/m5-dev

Reply via email to