From c96bab3fee48a9df55e7366344f838e1fc785c28 Mon Sep 17 00:00:00 2001 From: Paul Eggert Date: Sat, 6 Jul 2013 17:12:29 -0700 Subject: [PATCH] fnmatch: don't goto over declaration * lib/fnmatch_loop.c (FCT): Hoist local up one level, to avoid undefined behavior for goto over a declaration. Problem reported by Charlie Brown in . --- ChangeLog | 6 ++++++ lib/fnmatch_loop.c | 4 ++-- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index f714711ab..7698099fc 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,11 @@ 2013-07-06 Paul Eggert + fnmatch: don't goto over declaration + * lib/fnmatch_loop.c (FCT): Hoist local up one level, to avoid + undefined behavior for goto over a declaration. + Problem reported by Charlie Brown in + . + pipe2: decouple from binary-io a bit This is for Emacs, which needs pipe2 but not binary-io. * lib/pipe2.c [!GNULIB_BINARY_IO]: Don't include binary-io.h. diff --git a/lib/fnmatch_loop.c b/lib/fnmatch_loop.c index 1953302aa..c303de2a1 100644 --- a/lib/fnmatch_loop.c +++ b/lib/fnmatch_loop.c @@ -227,6 +227,8 @@ FCT (const CHAR *pattern, const CHAR *string, const CHAR *string_end, c = *p++; for (;;) { + bool is_range = false; + if (!(flags & FNM_NOESCAPE) && c == L_('\\')) { if (*p == L_('\0')) @@ -420,8 +422,6 @@ FCT (const CHAR *pattern, const CHAR *string, const CHAR *string_end, } else { - bool is_range = false; - #ifdef _LIBC bool is_seqval = false; -- 2.11.0