about summary refs log tree commit diff
path: root/posix/regexec.c
diff options
context:
space:
mode:
authorJakub Jelinek <jakub@redhat.com>2004-11-19 00:18:13 +0000
committerJakub Jelinek <jakub@redhat.com>2004-11-19 00:18:13 +0000
commit3115c839ed6794e4112ed74f768b7ab5542693b5 (patch)
tree7b09f21065751535d27bd6e14ca56a34f651dda2 /posix/regexec.c
parent1b7007d267c8d84cb6a1a4ac71cff32a92c1fc01 (diff)
downloadglibc-3115c839ed6794e4112ed74f768b7ab5542693b5.tar.gz
glibc-3115c839ed6794e4112ed74f768b7ab5542693b5.tar.xz
glibc-3115c839ed6794e4112ed74f768b7ab5542693b5.zip
Updated to fedora-glibc-20041119T0003
Diffstat (limited to 'posix/regexec.c')
-rw-r--r--posix/regexec.c12
1 files changed, 12 insertions, 0 deletions
diff --git a/posix/regexec.c b/posix/regexec.c
index a03df2636a..5877adeb55 100644
--- a/posix/regexec.c
+++ b/posix/regexec.c
@@ -882,6 +882,18 @@ re_search_internal (preg, string, length, start, range, stop, nmatch, pmatch,
 	    pmatch[reg_idx].rm_so += match_first;
 	    pmatch[reg_idx].rm_eo += match_first;
 	  }
+
+      if (dfa->subexp_map)
+        for (reg_idx = 0;
+             reg_idx + 1 < nmatch && reg_idx < preg->re_nsub;
+             reg_idx++)
+          if (dfa->subexp_map[reg_idx] != reg_idx)
+            {
+              pmatch[reg_idx + 1].rm_so
+                = pmatch[dfa->subexp_map[reg_idx] + 1].rm_so;
+              pmatch[reg_idx + 1].rm_eo
+                = pmatch[dfa->subexp_map[reg_idx] + 1].rm_eo;
+            }
     }
 
  free_return: