From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 3270 invoked by alias); 23 Aug 2013 17:51:54 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Received: (qmail 3242 invoked by uid 89); 23 Aug 2013 17:51:53 -0000 X-Spam-SWARE-Status: No, score=-3.5 required=5.0 tests=BAYES_00,KHOP_THREADED,RCVD_IN_DNSWL_NONE,RCVD_IN_HOSTKARMA_NO,SPF_HELO_PASS autolearn=ham version=3.3.2 X-Spam-User: qpsmtpd, 2 recipients Received: from smtprelay04.ispgateway.de (HELO smtprelay04.ispgateway.de) (80.67.31.32) by sourceware.org (qpsmtpd/0.84/v0.84-167-ge50287c) with ESMTP; Fri, 23 Aug 2013 17:51:52 +0000 Received: from [87.152.167.128] (helo=arch-64-politeia) by smtprelay04.ispgateway.de with esmtpsa (SSLv3:AES128-SHA:128) (Exim 4.68) (envelope-from ) id 1VCvWX-0000uX-CJ; Fri, 23 Aug 2013 19:51:49 +0200 Date: Fri, 23 Aug 2013 19:04:00 -0000 From: Stefan Schweter To: Tim Shen Cc: "libstdc++" , gcc-patches Subject: Re: [Patch 2/2] Localization problem in regex Message-ID: <20130823195131.51861289@arch-64-politeia> In-Reply-To: References: Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable X-Df-Sender: MjE4ODU1MA== X-SW-Source: 2013-08/txt/msg01381.txt.bz2 Am Fri, 23 Aug 2013 17:17:41 +0800 schrieb Tim Shen : > Inspired by this mail: > http://gcc.gnu.org/ml/libstdc++/2013-08/msg00131.html >=20 > Thanks! >=20 >=20 Hi Tim, I applied the patch + compiled everything - it's working now! Thanks! But... I found a problem with .imbue(): int main() { std::setlocale(LC_ALL, ""); =09 std::wstring str2 =3D L"=C3=B6=C3=A4=C3=BC"; std::wregex re2; re2.imbue(std::locale("")); re2.assign(L"([[:lower:]]+)"); std::wsmatch m2; =09 std::wsregex_token_iterator end {}; =09 for (std::wsregex_token_iterator p{str2.begin(), str2.end(), re2, {1}}; p !=3D end; ++p) { std::wcout << *p << std::endl; } return 0; } Works fine! But when there's no imbue() call, a Segmentation fault occurs. int main() { std::setlocale(LC_ALL, ""); =09 std::wstring str2 =3D L"=C3=B6=C3=A4=C3=BC"; std::wregex re2; //re2.imbue(std::locale("")); re2.assign(L"([[:lower:]]+)"); std::wsmatch m2; =09 std::wsregex_token_iterator end {}; =09 for (std::wsregex_token_iterator p{str2.begin(), str2.end(), re2, {1}}; p !=3D end; ++p) { std::wcout << *p << std::endl; } return 0; } May be it's better to throw an exception here? Thanks in advance, Stefan