]> sourceware.org Git - systemtap.git/commitdiff
Fix parsing multiple, comma separated, private global vars.
authorMartin Cermak <mcermak@redhat.com>
Tue, 10 Nov 2015 07:20:26 +0000 (08:20 +0100)
committerMartin Cermak <mcermak@redhat.com>
Tue, 10 Nov 2015 07:20:26 +0000 (08:20 +0100)
parse.cxx
testsuite/systemtap.base/private.exp

index fde1772a16a1d160d4494b955643bb6e90caec71..069bb4c10517c7f78c0e1dacb9f489547cebb126 100644 (file)
--- a/parse.cxx
+++ b/parse.cxx
@@ -1885,7 +1885,7 @@ parser::parse ()
          else
            {
              context = con_unknown;
-             throw PARSE_ERROR (_("expected 'probe', 'global', 'function', or '%{'"));
+             throw PARSE_ERROR (_("expected 'probe', 'global', 'private', 'function', or '%{'"));
            }
        }
       catch (parse_error& pe)
@@ -1903,6 +1903,7 @@ parser::parse ()
                     if (! t)
                       break;
                     if (t->type == tok_keyword && t->content == "probe") break;
+                    else if (t->type == tok_keyword && t->content == "private") break;
                     else if (t->type == tok_keyword && t->content == "global") break;
                     else if (t->type == tok_keyword && t->content == "function") break;
                     else if (t->type == tok_embedded) break;
@@ -2230,13 +2231,8 @@ parser::do_parse_global (vector <vardecl*>& globals, vector<probe*>&, string & f
   const token* t;
   while (1)
     {
-      if (iter0 && priv)
-        t = t0;
-      else
-      {
-        t = next ();
-        iter0 = false;
-      }
+      t = (iter0 && priv) ? t0 : next ();
+      iter0 = false;
       if (! (t->type == tok_identifier))
         throw PARSE_ERROR (_("expected identifier"));
 
index 596a3db5ad7b27ad5368861d5ea2a160a1deb396..9ef2326008cff1380d16e96e1feab077835e1614 100644 (file)
@@ -150,6 +150,21 @@ foreach runtime [get_runtime_list] {
     }
     catch {close}; catch {wait}
     if {$__counter == 1} {pass $subtest} else {fail $subtest}
+
+    # Subtest
+    set subtest "$test multiple-private-global-var-decl"
+    set __counter 0
+    eval spawn "stap --runtime=$runtime -e {private varA = 41, varB = 42 probe oneshot \{ println(varA, varB) \}}"
+    expect {
+        -timeout 160
+        -re {^4142\r\n} {
+            incr __counter
+            exp_continue
+        }
+        timeout {fail "$subtest (timeout)"}
+    }
+    catch {close}; catch {wait}
+    if {$__counter == 1} {pass $subtest} else {fail $subtest}
 }
 
 # Cleanup
This page took 0.051262 seconds and 5 git commands to generate.