# HG changeset patch # User jwe # Date 857530075 0 # Node ID ecc1a12678de67ba08883c3b7cad82ef2e7e4914 # Parent e68dcf8ffd33fb8ed88269c13b9bb7c0c9a27bdd [project @ 1997-03-05 02:47:54 by jwe] diff --git a/src/ChangeLog b/src/ChangeLog --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,10 @@ +Tue Mar 4 20:36:53 1997 John W. Eaton + + * variables.cc (Fexist): Don't let files with `.' in their names + confuse us. + + * symtab.cc (valid_identifier (const string&)): New function. + Sat Mar 1 15:23:14 1997 John W. Eaton * Version 2.0.5 released. diff --git a/src/symtab.cc b/src/symtab.cc --- a/src/symtab.cc +++ b/src/symtab.cc @@ -1190,6 +1190,12 @@ return 1; } +int +valid_identifier (const string& s) +{ + return valid_identifier (s.c_str ()); +} + /* ;;; Local Variables: *** ;;; mode: C++ *** diff --git a/src/symtab.h b/src/symtab.h --- a/src/symtab.h +++ b/src/symtab.h @@ -321,6 +321,8 @@ extern int valid_identifier (const char *s); +extern int valid_identifier (const string& s); + #endif /* diff --git a/src/variables.cc b/src/variables.cc --- a/src/variables.cc +++ b/src/variables.cc @@ -331,18 +331,19 @@ } string struct_elts; + string symbol_name = name; size_t pos = name.find ('.'); - if (pos != NPOS) + if (pos != NPOS && pos > 0) { struct_elts = name.substr (pos+1); - name = name.substr (0, pos); + symbol_name = name.substr (0, pos); } - symbol_record *sr = curr_sym_tab->lookup (name, 0, 0); + symbol_record *sr = curr_sym_tab->lookup (symbol_name, 0, 0); if (! sr) - sr = global_sym_tab->lookup (name, 0, 0); + sr = global_sym_tab->lookup (symbol_name, 0, 0); retval = 0.0;