Update.
authorUlrich Drepper <drepper@redhat.com>
Thu, 16 Jan 2003 19:20:36 +0000 (19:20 +0000)
committerUlrich Drepper <drepper@redhat.com>
Thu, 16 Jan 2003 19:20:36 +0000 (19:20 +0000)
* 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>

ChangeLog
linuxthreads/ChangeLog
posix/Makefile
posix/bug-regex16.c [new file with mode: 0644]
posix/regcomp.c

index 49945b1..daecc9a 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,13 @@
 2003-01-16  Jakub Jelinek  <jakub@redhat.com>
 
+       * 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>
+
        * elf/dl-load.c (_dl_map_object_from_fd): Use
        GL(dl_tls_dtv_slotinfo_list) != NULL to check whether TLS has
        been already initialized.
index 990ebb3..93023e6 100644 (file)
@@ -1,3 +1,11 @@
+2003-01-15  Jakub Jelinek  <jakub@redhat.com>
+
+       * sysdeps/ia64/tls.h (tcbhead_t): Use the TLS ABI required layout
+       if USE_TLS only.
+       (NONTLS_INIT_TP): Revert last change.
+       * sysdeps/ia64/tcb-offsets.sym (MULTIPLE_THREADS_OFFSET): Define to
+       offsetof (tcbhead_t, multiple_threads) if USE_TLS not defined.
+
 2003-01-16  Jakub Jelinek  <jakub@redhat.com>
 
        * pthread.c (_pthread_initialize_minimal): Use
index 90129d7..6b2830a 100644 (file)
@@ -75,7 +75,7 @@ tests         := tstgetopt testfnm runtests runptests      \
                   tst-chmod bug-regex1 bug-regex2 bug-regex3 bug-regex4 \
                   tst-gnuglob tst-regex bug-regex5 bug-regex6 bug-regex7 \
                   bug-regex8 bug-regex9 bug-regex10 bug-regex11 bug-regex12 \
-                  bug-regex13 bug-regex14 bug-regex15
+                  bug-regex13 bug-regex14 bug-regex15 bug-regex16
 ifeq (yes,$(build-shared))
 test-srcs      := globtest
 tests           += wordexp-test tst-exec tst-spawn
diff --git a/posix/bug-regex16.c b/posix/bug-regex16.c
new file mode 100644 (file)
index 0000000..1e41ccb
--- /dev/null
@@ -0,0 +1,35 @@
+/* Test re_compile_pattern error messages.  */
+
+#include <stdio.h>
+#include <string.h>
+#include <regex.h>
+
+int
+main (void)
+{
+  struct re_pattern_buffer re;
+  const char *s;
+  int ret = 0;
+
+  re_set_syntax (RE_SYNTAX_POSIX_EGREP);
+  memset (&re, 0, sizeof (re));
+  s = re_compile_pattern ("[[.invalid_collating_symbol.]]", 30, &re);
+  if (s == NULL || strcmp (s, "Invalid collation character"))
+    {
+      printf ("re_compile_pattern returned %s\n", s);
+      ret = 1;
+    }
+  s = re_compile_pattern ("[[=invalid_equivalence_class=]]", 31, &re);
+  if (s == NULL || strcmp (s, "Invalid collation character"))
+    {
+      printf ("re_compile_pattern returned %s\n", s);
+      ret = 1;
+    }
+  s = re_compile_pattern ("[[:invalid_character_class:]]", 29, &re);
+  if (s == NULL || strcmp (s, "Invalid character class name"))
+    {
+      printf ("re_compile_pattern returned %s\n", s);
+      ret = 1;
+    }
+  return ret;
+}
index 12724e4..e36383b 100644 (file)
@@ -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.  */