From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: by sourceware.org (Postfix, from userid 2155) id E1B343858C2C; Tue, 28 Feb 2023 15:46:20 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org E1B343858C2C DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sourceware.org; s=default; t=1677599180; bh=z3ReK8GyBO4uogZyhV5DfvebF0qYtTfJvSRccDNoyAw=; h=From:To:Subject:Date:From; b=pLCPCnUwmMOWx7NYLzumr81itJTZ9WKqRcemyzxdr2g8HXjMQNmVEM4or+h0BRwhY GyT2BghDKxsTzfgis9URBHziMzdLwQyUpQt3hMmQaNLR5PmnEQxLvySJ+vaOZ6JCUq chEc6Q+6D+ohqmes5g050Ui0C2eewdUJSUYbPmYg= Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable From: Corinna Vinschen To: cygwin-cvs@sourceware.org Subject: [newlib-cygwin/main] Cygwin: fnmatch: drop static variable X-Act-Checkin: newlib-cygwin X-Git-Author: Corinna Vinschen X-Git-Refname: refs/heads/main X-Git-Oldrev: 6e75277b122c47ca63d9520780291cf4bc7251cf X-Git-Newrev: 0d2ad77c40b641ebe2965568945a622f3f6dbd5c Message-Id: <20230228154620.E1B343858C2C@sourceware.org> Date: Tue, 28 Feb 2023 15:46:20 +0000 (GMT) List-Id: https://sourceware.org/git/gitweb.cgi?p=3Dnewlib-cygwin.git;h=3D0d2ad77c40b= 641ebe2965568945a622f3f6dbd5c commit 0d2ad77c40b641ebe2965568945a622f3f6dbd5c Author: Corinna Vinschen AuthorDate: Tue Feb 28 16:45:52 2023 +0100 Commit: Corinna Vinschen CommitDate: Tue Feb 28 16:45:52 2023 +0100 Cygwin: fnmatch: drop static variable =20 fnmatch calls fnmatch1 with a static mbstate_t. This breaks calling fnmatch from multiple threads. Fix it by folding fnmatch1 into fnmatch and moving all mbstates to local variables. =20 Signed-off-by: Corinna Vinschen Diff: --- winsup/cygwin/libc/fnmatch.c | 13 ++----------- 1 file changed, 2 insertions(+), 11 deletions(-) diff --git a/winsup/cygwin/libc/fnmatch.c b/winsup/cygwin/libc/fnmatch.c index beb67f01e5d1..d109c2124aba 100644 --- a/winsup/cygwin/libc/fnmatch.c +++ b/winsup/cygwin/libc/fnmatch.c @@ -73,22 +73,13 @@ __FBSDID("$FreeBSD: head/lib/libc/gen/fnmatch.c 288309 = 2015-09-27 12:52:18Z jill #define RANGE_ERROR (-1) =20 static int rangematch(const char *, wint_t, int, char **, mbstate_t *); -static int fnmatch1(const char *, const char *, const char *, int, mbstate= _t, - mbstate_t); =20 int fnmatch(const char *pattern, const char *string, int flags) { - static const mbstate_t initial; - - return (fnmatch1(pattern, string, string, flags, initial, initial)); -} - -static int -fnmatch1(const char *pattern, const char *string, const char *stringstart, - int flags, mbstate_t patmbs, mbstate_t strmbs) -{ + const char *stringstart =3D string; const char *bt_pattern, *bt_string; + mbstate_t patmbs, strmbs; mbstate_t bt_patmbs, bt_strmbs; char *newp; char c;