about summary refs log tree commit diff
path: root/posix/regcomp.c
diff options
context:
space:
mode:
authorUlrich Drepper <drepper@redhat.com>2003-01-16 19:20:36 +0000
committerUlrich Drepper <drepper@redhat.com>2003-01-16 19:20:36 +0000
commit7b7b9e70ea0d820c863c78fbf84fe52626a408d6 (patch)
treee790ee9854276c668b51c81e470d2aab2df0800c /posix/regcomp.c
parent850dcfcafe6c1cc9e59763a882a25a2f0c2c4d68 (diff)
downloadglibc-7b7b9e70ea0d820c863c78fbf84fe52626a408d6.tar.gz
glibc-7b7b9e70ea0d820c863c78fbf84fe52626a408d6.tar.xz
glibc-7b7b9e70ea0d820c863c78fbf84fe52626a408d6.zip
Update.
	* posix/regcomp.c (parse_bracket_exp): If build_charclass fails,
	set *err to the returned error, not to REG_ESPACE unconditionally.
	(build_word_op): Likewise.
	* posix/Makefile (tests): Add bug-regex16.
	* posix/bug-regex16.c: New test.

2003-01-16  Jakub Jelinek  <jakub@redhat.com>
Diffstat (limited to 'posix/regcomp.c')
-rw-r--r--posix/regcomp.c12
1 files changed, 6 insertions, 6 deletions
diff --git a/posix/regcomp.c b/posix/regcomp.c
index 12724e4605..e36383b92d 100644
--- a/posix/regcomp.c
+++ b/posix/regcomp.c
@@ -2993,13 +2993,13 @@ parse_bracket_exp (regexp, dfa, token, syntax, err)
 		goto parse_bracket_exp_free_return;
 	      break;
 	    case CHAR_CLASS:
-	      ret = build_charclass (sbcset,
+	      *err = build_charclass (sbcset,
 #ifdef RE_ENABLE_I18N
-				     mbcset, &char_class_alloc,
+				      mbcset, &char_class_alloc,
 #endif /* RE_ENABLE_I18N */
-				     start_elem.opr.name, syntax);
-	      if (BE (ret != REG_NOERROR, 0))
-	       goto parse_bracket_exp_espace;
+				      start_elem.opr.name, syntax);
+	      if (BE (*err != REG_NOERROR, 0))
+	       goto parse_bracket_exp_free_return;
 	      break;
 	    default:
 	      assert (0);
@@ -3380,7 +3380,7 @@ build_word_op (dfa, not, err)
 #ifdef RE_ENABLE_I18N
       free_charset (mbcset);
 #endif /* RE_ENABLE_I18N */
-      *err = REG_ESPACE;
+      *err = ret;
       return NULL;
     }
   /* \w match '_' also.  */