about summary refs log tree commit diff
path: root/posix
diff options
context:
space:
mode:
Diffstat (limited to 'posix')
-rw-r--r--posix/regcomp.c60
1 files changed, 28 insertions, 32 deletions
diff --git a/posix/regcomp.c b/posix/regcomp.c
index 7c43359014..6a776374a9 100644
--- a/posix/regcomp.c
+++ b/posix/regcomp.c
@@ -132,7 +132,7 @@ static bin_tree_t *create_tree (re_dfa_t *dfa,
 				re_token_type_t type, int index);
 static bin_tree_t *re_dfa_add_tree_node (re_dfa_t *dfa,
 					 bin_tree_t *left, bin_tree_t *right,
-					 re_token_t)
+					 const re_token_t *token)
   __attribute ((noinline));
 static bin_tree_t *duplicate_tree (const bin_tree_t *src, re_dfa_t *dfa);
 
@@ -1426,11 +1426,7 @@ duplicate_node (new_idx, dfa, org_idx, constraint)
      int *new_idx, org_idx;
      unsigned int constraint;
 {
-  re_token_t dup;
-  int dup_idx;
-
-  dup = dfa->nodes[org_idx];
-  dup_idx = re_dfa_add_node (dfa, dup, 1);
+  int dup_idx = re_dfa_add_node (dfa, dfa->nodes[org_idx], 1);
   if (BE (dup_idx == -1, 0))
     return REG_ESPACE;
   dfa->nodes[dup_idx].constraint = constraint;
@@ -1929,7 +1925,7 @@ parse (regexp, preg, syntax, err)
   tree = parse_reg_exp (regexp, preg, &current_token, syntax, 0, err);
   if (BE (*err != REG_NOERROR && tree == NULL, 0))
     return NULL;
-  eor = re_dfa_add_tree_node (dfa, NULL, NULL, current_token);
+  eor = re_dfa_add_tree_node (dfa, NULL, NULL, &current_token);
   if (tree != NULL)
     root = create_tree (dfa, tree, eor, CONCAT, 0);
   else
@@ -1979,7 +1975,7 @@ parse_reg_exp (regexp, preg, token, syntax, nest, err)
 	}
       else
 	branch = NULL;
-      tree = re_dfa_add_tree_node (dfa, tree, branch, alt_token);
+      tree = re_dfa_add_tree_node (dfa, tree, branch, &alt_token);
       if (BE (tree == NULL, 0))
 	{
 	  *err = REG_ESPACE;
@@ -2058,7 +2054,7 @@ parse_expression (regexp, preg, token, syntax, nest, err)
   switch (token->type)
     {
     case CHARACTER:
-      tree = re_dfa_add_tree_node (dfa, NULL, NULL, *token);
+      tree = re_dfa_add_tree_node (dfa, NULL, NULL, token);
       if (BE (tree == NULL, 0))
 	{
 	  *err = REG_ESPACE;
@@ -2072,7 +2068,7 @@ parse_expression (regexp, preg, token, syntax, nest, err)
 	    {
 	      bin_tree_t *mbc_remain;
 	      fetch_token (token, regexp, syntax);
-	      mbc_remain = re_dfa_add_tree_node (dfa, NULL, NULL, *token);
+	      mbc_remain = re_dfa_add_tree_node (dfa, NULL, NULL, token);
 	      tree = create_tree (dfa, tree, mbc_remain, CONCAT, 0);
 	      if (BE (mbc_remain == NULL || tree == NULL, 0))
 		{
@@ -2101,7 +2097,7 @@ parse_expression (regexp, preg, token, syntax, nest, err)
 	  return NULL;
 	}
       dfa->used_bkref_map |= 1 << (token->opr.idx - 1);
-      tree = re_dfa_add_tree_node (dfa, NULL, NULL, *token);
+      tree = re_dfa_add_tree_node (dfa, NULL, NULL, token);
       if (BE (tree == NULL, 0))
 	{
 	  *err = REG_ESPACE;
@@ -2144,7 +2140,7 @@ parse_expression (regexp, preg, token, syntax, nest, err)
 
       /* Then we can these characters as normal characters.  */
       token->type = CHARACTER;
-      tree = re_dfa_add_tree_node (dfa, NULL, NULL, *token);
+      tree = re_dfa_add_tree_node (dfa, NULL, NULL, token);
       if (BE (tree == NULL, 0))
 	{
 	  *err = REG_ESPACE;
@@ -2162,11 +2158,11 @@ parse_expression (regexp, preg, token, syntax, nest, err)
 	{
 	  bin_tree_t *tree_first, *tree_last;
 	  token->opr.ctx_type = WORD_FIRST;
-	  tree_first = re_dfa_add_tree_node (dfa, NULL, NULL, *token);
+	  tree_first = re_dfa_add_tree_node (dfa, NULL, NULL, token);
 	  token->opr.ctx_type = WORD_LAST;
-	  tree_last = re_dfa_add_tree_node (dfa, NULL, NULL, *token);
+	  tree_last = re_dfa_add_tree_node (dfa, NULL, NULL, token);
 	  token->type = OP_ALT;
-	  tree = re_dfa_add_tree_node (dfa, tree_first, tree_last, *token);
+	  tree = re_dfa_add_tree_node (dfa, tree_first, tree_last, token);
 	  if (BE (tree_first == NULL || tree_last == NULL || tree == NULL, 0))
 	    {
 	      *err = REG_ESPACE;
@@ -2175,7 +2171,7 @@ parse_expression (regexp, preg, token, syntax, nest, err)
 	}
       else
 	{
-	  tree = re_dfa_add_tree_node (dfa, NULL, NULL, *token);
+	  tree = re_dfa_add_tree_node (dfa, NULL, NULL, token);
 	  if (BE (tree == NULL, 0))
 	    {
 	      *err = REG_ESPACE;
@@ -2189,7 +2185,7 @@ parse_expression (regexp, preg, token, syntax, nest, err)
       fetch_token (token, regexp, syntax);
       return tree;
     case OP_PERIOD:
-      tree = re_dfa_add_tree_node (dfa, NULL, NULL, *token);
+      tree = re_dfa_add_tree_node (dfa, NULL, NULL, token);
       if (BE (tree == NULL, 0))
 	{
 	  *err = REG_ESPACE;
@@ -2289,7 +2285,7 @@ parse_sub_exp (regexp, preg, token, syntax, nest, err)
   dfa->subexps[cur_nsub].start = dfa->nodes_len;
   dfa->subexps[cur_nsub].end = -1;
 
-  left_par = re_dfa_add_tree_node (dfa, NULL, NULL, *token);
+  left_par = re_dfa_add_tree_node (dfa, NULL, NULL, token);
   if (BE (left_par == NULL, 0))
     {
       *err = REG_ESPACE;
@@ -2312,7 +2308,7 @@ parse_sub_exp (regexp, preg, token, syntax, nest, err)
       *err = REG_EPAREN;
       return NULL;
     }
-  right_par = re_dfa_add_tree_node (dfa, NULL, NULL, *token);
+  right_par = re_dfa_add_tree_node (dfa, NULL, NULL, token);
   dfa->subexps[cur_nsub].end = dfa->nodes_len;
   tree = ((tree == NULL) ? right_par
 	  : create_tree (dfa, tree, right_par, CONCAT, 0));
@@ -2398,14 +2394,14 @@ parse_dup_op (dup_elem, regexp, dfa, token, syntax, err)
 	  if (start > 0)
 	    {
 	      elem = duplicate_tree (elem, dfa);
-	      work_tree = re_dfa_add_tree_node (dfa, elem, NULL, dup_token);
+	      work_tree = re_dfa_add_tree_node (dfa, elem, NULL, &dup_token);
 	      tree = create_tree (dfa, tree, work_tree, CONCAT, 0);
 	      if (BE (elem == NULL || work_tree == NULL || tree == NULL, 0))
 		goto parse_dup_op_espace;
 	    }
 	  else
 	    {
-	      tree = re_dfa_add_tree_node (dfa, elem, NULL, dup_token);
+	      tree = re_dfa_add_tree_node (dfa, elem, NULL, &dup_token);
 	      if (BE (tree == NULL, 0))
 		goto parse_dup_op_espace;
 	    }
@@ -2423,14 +2419,14 @@ parse_dup_op (dup_elem, regexp, dfa, token, syntax, err)
 	  if (start > 0)
 	    {
 	      elem = duplicate_tree (elem, dfa);
-	      elem = re_dfa_add_tree_node (dfa, elem, NULL, dup_token);
+	      elem = re_dfa_add_tree_node (dfa, elem, NULL, &dup_token);
 	      tree = create_tree (dfa, tree, elem, CONCAT, 0);
 	      if (BE (elem == NULL || tree == NULL, 0))
 		goto parse_dup_op_espace;
 	    }
 	  else
 	    {
-	      tree = elem = re_dfa_add_tree_node (dfa, elem, NULL, dup_token);
+	      tree = elem = re_dfa_add_tree_node (dfa, elem, NULL, &dup_token);
 	      if (BE (tree == NULL, 0))
 		goto parse_dup_op_espace;
 	    }
@@ -2448,7 +2444,7 @@ parse_dup_op (dup_elem, regexp, dfa, token, syntax, err)
     }
   else
     {
-      tree = re_dfa_add_tree_node (dfa, tree, NULL, *token);
+      tree = re_dfa_add_tree_node (dfa, tree, NULL, token);
       if (BE (tree == NULL, 0))
 	{
 	  *err = REG_ESPACE;
@@ -3130,7 +3126,7 @@ parse_bracket_exp (regexp, dfa, token, syntax, err)
   /* Build a tree for simple bracket.  */
   br_token.type = SIMPLE_BRACKET;
   br_token.opr.sbcset = sbcset;
-  work_tree = re_dfa_add_tree_node (dfa, NULL, NULL, br_token);
+  work_tree = re_dfa_add_tree_node (dfa, NULL, NULL, &br_token);
   if (BE (work_tree == NULL, 0))
     goto parse_bracket_exp_espace;
 
@@ -3159,12 +3155,12 @@ parse_bracket_exp (regexp, dfa, token, syntax, err)
 	}
       br_token.type = COMPLEX_BRACKET;
       br_token.opr.mbcset = mbcset;
-      mbc_tree = re_dfa_add_tree_node (dfa, NULL, NULL, br_token);
+      mbc_tree = re_dfa_add_tree_node (dfa, NULL, NULL, &br_token);
       if (BE (mbc_tree == NULL, 0))
 	goto parse_bracket_exp_espace;
       /* Then join them by ALT node.  */
       alt_token.type = OP_ALT;
-      work_tree = re_dfa_add_tree_node (dfa, work_tree, mbc_tree, alt_token);
+      work_tree = re_dfa_add_tree_node (dfa, work_tree, mbc_tree, &alt_token);
       if (BE (mbc_tree != NULL, 1))
 	return work_tree;
     }
@@ -3534,7 +3530,7 @@ build_charclass_op (dfa, trans, class_name, extra, not, err)
   /* Build a tree for simple bracket.  */
   br_token.type = SIMPLE_BRACKET;
   br_token.opr.sbcset = sbcset;
-  tree = re_dfa_add_tree_node (dfa, NULL, NULL, br_token);
+  tree = re_dfa_add_tree_node (dfa, NULL, NULL, &br_token);
   if (BE (tree == NULL, 0))
     goto build_word_op_espace;
 
@@ -3547,12 +3543,12 @@ build_charclass_op (dfa, trans, class_name, extra, not, err)
       br_token.type = COMPLEX_BRACKET;
       br_token.opr.mbcset = mbcset;
       dfa->has_mb_node = 1;
-      mbc_tree = re_dfa_add_tree_node (dfa, NULL, NULL, br_token);
+      mbc_tree = re_dfa_add_tree_node (dfa, NULL, NULL, &br_token);
       if (BE (mbc_tree == NULL, 0))
 	goto build_word_op_espace;
       /* Then join them by ALT node.  */
       alt_token.type = OP_ALT;
-      tree = re_dfa_add_tree_node (dfa, tree, mbc_tree, alt_token);
+      tree = re_dfa_add_tree_node (dfa, tree, mbc_tree, &alt_token);
       if (BE (mbc_tree != NULL, 1))
 	return tree;
     }
@@ -3666,9 +3662,9 @@ re_dfa_add_tree_node (dfa, left, right, token)
      re_dfa_t *dfa;
      bin_tree_t *left;
      bin_tree_t *right;
-     re_token_t token;
+     const re_token_t *token;
 {
-  int new_idx = re_dfa_add_node (dfa, token, 0);
+  int new_idx = re_dfa_add_node (dfa, *token, 0);
 
   if (new_idx == -1)
     return NULL;