summaryrefslogtreecommitdiff
path: root/patches/glibc/2.1.3/rh62-08-glibc-2.1.3-glob.patch
diff options
context:
space:
mode:
Diffstat (limited to 'patches/glibc/2.1.3/rh62-08-glibc-2.1.3-glob.patch')
-rw-r--r--patches/glibc/2.1.3/rh62-08-glibc-2.1.3-glob.patch57
1 files changed, 57 insertions, 0 deletions
diff --git a/patches/glibc/2.1.3/rh62-08-glibc-2.1.3-glob.patch b/patches/glibc/2.1.3/rh62-08-glibc-2.1.3-glob.patch
new file mode 100644
index 0000000..cdd4c0b
--- /dev/null
+++ b/patches/glibc/2.1.3/rh62-08-glibc-2.1.3-glob.patch
@@ -0,0 +1,57 @@
+2001-11-29 Jakub Jelinek <jakub@redhat.com>
+
+ * sysdeps/generic/glob.c (next_brace_sub): Return NULL if braces
+ don't match, fix {{a,b},c} globbing, clean up.
+ Patch by Flavio Veloso <flaviovs@magnux.com>.
+
+--- libc/sysdeps/generic/glob.c.jj Thu Aug 23 18:49:29 2001
++++ libc/sysdeps/generic/glob.c Thu Nov 29 13:17:21 2001
+@@ -355,42 +355,14 @@ static
+ inline
+ #endif
+ const char *
+-next_brace_sub (begin)
+- const char *begin;
++next_brace_sub (cp)
++ const char *cp;
+ {
+ unsigned int depth = 0;
+- const char *cp = begin;
+-
+- while (1)
+- {
+- if (depth == 0)
+- {
+- if (*cp != ',' && *cp != '}' && *cp != '\0')
+- {
+- if (*cp == '{')
+- ++depth;
+- ++cp;
+- continue;
+- }
+- }
+- else
+- {
+- while (*cp != '\0' && (*cp != '}' || depth > 0))
+- {
+- if (*cp == '}')
+- --depth;
+- ++cp;
+- }
+- if (*cp == '\0')
+- /* An incorrectly terminated brace expression. */
+- return NULL;
+-
+- continue;
+- }
+- break;
+- }
+-
+- return cp;
++ while (*cp != '\0' && (*cp != '}' || depth--) && (*cp != ',' || depth))
++ if (*cp++ == '{')
++ depth++;
++ return *cp != '\0' ? cp : NULL;
+ }
+
+ #endif /* !GLOB_ONLY_P */