| delorie.com/archives/browse.cgi | search |
| X-Recipient: | archive-cygwin AT delorie DOT com |
| DomainKey-Signature: | a=rsa-sha1; c=nofws; d=sourceware.org; h=list-id |
| :list-unsubscribe:list-subscribe:list-archive:list-post | |
| :list-help:sender:date:from:to:subject:message-id:reply-to | |
| :references:mime-version:content-type:in-reply-to; q=dns; s= | |
| default; b=v4oosMOwCQvI1tTwjSUAbSaR6hXDx0WN8PXXaOYtHzSd481h4h+SA | |
| XoX+cS3XXop3kJMMYADXtyzbmP6L6BdkEqVLFtFjbeTY4PQRFVu94AvzHZ90ujd3 | |
| NJswGLTLCxa/5xKjRUM4F9def0Yu/8y5rmhT0k+lHBI+hN8L55mZ4s= | |
| DKIM-Signature: | v=1; a=rsa-sha1; c=relaxed; d=sourceware.org; h=list-id |
| :list-unsubscribe:list-subscribe:list-archive:list-post | |
| :list-help:sender:date:from:to:subject:message-id:reply-to | |
| :references:mime-version:content-type:in-reply-to; s=default; | |
| bh=XhrskTHbx3fXWIuxh4t5Ht11kqw=; b=Y+iZI96IEmQPl1oHGMeFL5goaIvr | |
| Eei3Csh4qJ5HhW1xgU/6l4rgvulsxvnSXUDslWok+bP/grvhbPyy7u0/UP73qzCK | |
| +zwxqxPr0iaWDNWY4Iv0b8FFjRNli4GVBO2kODYNrVJCQpZ8rJAwQ3BJKinAyjpw | |
| iLszVyJa1zoPnpM= | |
| Mailing-List: | contact cygwin-help AT cygwin DOT com; run by ezmlm |
| List-Id: | <cygwin.cygwin.com> |
| List-Subscribe: | <mailto:cygwin-subscribe AT cygwin DOT com> |
| List-Archive: | <http://sourceware.org/ml/cygwin/> |
| List-Post: | <mailto:cygwin AT cygwin DOT com> |
| List-Help: | <mailto:cygwin-help AT cygwin DOT com>, <http://sourceware.org/ml/#faqs> |
| Sender: | cygwin-owner AT cygwin DOT com |
| Mail-Followup-To: | cygwin AT cygwin DOT com |
| Delivered-To: | mailing list cygwin AT cygwin DOT com |
| Authentication-Results: | sourceware.org; auth=none |
| X-Virus-Found: | No |
| X-Spam-SWARE-Status: | No, score=-101.5 required=5.0 tests=AWL,BAYES_00,GOOD_FROM_CORINNA_CYGWIN,KAM_LAZY_DOMAIN_SECURITY,RCVD_IN_DNSWL_LOW,SPF_HELO_PASS autolearn=ham version=3.3.2 spammy=Denis, 013, 0.13, H*f:sk:3C55C20 |
| X-HELO: | drew.franken.de |
| Date: | Wed, 24 Aug 2016 19:20:57 +0200 |
| From: | Corinna Vinschen <corinna-cygwin AT cygwin DOT com> |
| To: | cygwin AT cygwin DOT com |
| Subject: | Re: [ANNOUNCEMENT] TEST RELEASE: Cygwin 2.6.0-0.12 |
| Message-ID: | <20160824172057.GB9783@calimero.vinschen.de> |
| Reply-To: | cygwin AT cygwin DOT com |
| Mail-Followup-To: | cygwin AT cygwin DOT com |
| References: | <announce DOT 20160823165646 DOT GB2261 AT calimero DOT vinschen DOT de> <3C55C207-0928-4835-84EE-B0F34FAAD647 AT Denis-Excoffier DOT org> |
| MIME-Version: | 1.0 |
| In-Reply-To: | <3C55C207-0928-4835-84EE-B0F34FAAD647@Denis-Excoffier.org> |
| User-Agent: | Mutt/1.6.2 (2016-07-01) |
--neYutvxvOLaeuPCA
Content-Type: text/plain; charset=utf-8
Content-Disposition: inline
Content-Transfer-Encoding: quoted-printable
Hi Denis,
On Aug 24 18:07, Denis Excoffier wrote:
> > On 2016-08-23 18:56, Corinna Vinschen <corinna-cygwin AT cygwin DOT com> wrote:
> >=20
> > I uploaded a new Cygwin test release 2.6.0-0.12.
> >=20
> ...
> > The 2.6.0 release is going to introducing the locale_t datatype, as well
> > as all functions related to locale_t locales and per-thread locales per
> > POSIX-1.2008.
> >=20
> > So, rather than just providing a single, per-process locale, you can now
> > create new locales ("newlocale") and set it as locale for the current
> > thread ("uselocale") or use it directly with one of the new functions
> > taking a locale_t as parameter (i.e. isalpha_l).
> >=20
> > Since this is brand-new code, this code *will* have bugs.
> >=20
> > It would be very helpful if interested developers and Cygwin package
> > maintainers could give this new stuff some good testing.
> >=20
>=20
> Hello,
>=20
> I have exercised the new locale-related code and think i found a problem
> in the strtod_l function (see small test case in gugu.c below).
> [...]
> % cat gugu.c
> //#define _GNU_SOURCE 1
> #include <stdio.h>
> #include <locale.h>
> #include <stdlib.h>
>=20
> //
> int main() {
> //
> locale_t locale =3D newlocale (LC_ALL_MASK, "C", (locale_t) 0);
> if (!locale) return 1;
> char const *nptr =3D "1.5";
> char **endptr;
> double r1 =3D strtod (nptr, endptr);
> fprintf (stderr, "r1=3D%f\n", r1);
> double r2 =3D strtod_l (nptr, endptr, locale);
> fprintf (stderr, "r2=3D%f\n", r2);
> return 0;
> };
Uhm... your testcase has two problems:
- _GNU_SOURCE *must* be defined to get the declaration of strtod_l. You
can't just omit it. The warning is serious. By missing out on the
declaration the compiler assumes all arguments are of type int.
- The usage of endptr is wrong. Here's how you do it:
char *endptr;
strtod (nptr, &endptr);
strtod and friends expect endptr to be a pointer to a char *
which it changes to point to the end of the converted string.
By giving an uninitialized char ** to strtod, it will write
the result into a random location.
However, fixing that doesn't avoid the crash in Cygwin, of course. I
see where the problem is. The structure used for the "C" locale is
const. On the other hand, the struct also contains the lconv struct
which gets overwritten by __localeconv_l. So for the "C" locale this
tries to write into a R/O memory region.
However, since the "C" locale is fixed *and* its lconv is already
initialized, there's no reason at all for __localeconv_l to overwrite
it.
I'll apply a fix to __localeconv_l to just return its lconv without
attempting to write its values when using the "C" locale structure
and upload a -0.13 test release shortly.
Thanks for the report and especially for providing a testcase!
Corinna
--=20
Corinna Vinschen Please, send mails regarding Cygwin to
Cygwin Maintainer cygwin AT cygwin DOT com
Red Hat
--neYutvxvOLaeuPCA
Content-Type: application/pgp-signature; name="signature.asc"
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2
iQIcBAEBCAAGBQJXvdd5AAoJEPU2Bp2uRE+gmncP+wQJrqRPONGH5lBRhDS7uwLg
fGgcRskqfMYW7Sqcg89AxzU1634KsnxFhUOfBkowA3CNC4vzOiE2cI3UJsCRJu/A
lC5vXlmWp05cUN8AUV7KORcfpRtbtcX5s68jdRfxuU4uWIsmMT2kSzb6HElfv6jH
NzMQ9LOe7vk9Z5gtw2iy/WvYqgMaWxe/GvwQFnOD/+V+XsL6tLcOiPqoHR9S+bKz
BZ2K507f0507bibE3u41yGG0DfLF90FZamickru+cfagW1n+/AIt87AfAibv4IRI
oI39PyhywtpUjjcJ9SmcB7aobaiJnBxHcFNTLB0csBGxw/W0Kwm+SEoar2S+Ky95
RRxDGG9LTRVcHgIfmgO8NFm1eZ6js6Jn7p9RnTPmfooP9if2IXkCZjn5U/IAv88h
XDg49kCj2AEaVgp3XYNMKFpekaGzu0Tpjz1b5Tr5Ui8KLdN1QBC8xnKrZseBPLwG
Cg9j6pt0b57qYOlupmFW6HUfWo4YYuYI8zGhhxt3pXoGphIJALd8czo9TkfGHYOI
4hf1yBbHOpBb/nooBZdVkZn37Mpxgm/w8PnLQVx02xD9oLQBqUsThVTXAMB5qVoS
ZWLVvUijveqnPAThM2n/oHE+RpU0/L/u8+vBuzErjRPZVfKgrfX0fXlqsoYhVBbh
HsoG65Vh7zMmFL3+Krlu
=XDiB
-----END PGP SIGNATURE-----
--neYutvxvOLaeuPCA--
| webmaster | delorie software privacy |
| Copyright © 2019 by DJ Delorie | Updated Jul 2019 |