From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) by sourceware.org (Postfix) with ESMTPS id 657D53858D20 for ; Fri, 5 May 2023 09:55:10 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 657D53858D20 Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=redhat.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=redhat.com DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1683280510; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: in-reply-to:in-reply-to:references:references; bh=iVxsJCPxe96nlle7zNJ8n9yUCR8O1FXofM+AHsxvD0g=; b=eYNnfDKlrnbX7+1BKvVHcJ9863i84H1Wj1MB18rUsmVOttJX98iRqaIzL3saAlBVlJ83oL edXdYjw+oFLDM3wlMUE+H3klJtZ4rI+Y84ADuaKpSzpHmHCoa/jJjjkPK4dhCWzhnvOHKe NP/Zzzes+1SMZ+DDko6E+bqF1phvdvU= Received: from mail-lj1-f199.google.com (mail-lj1-f199.google.com [209.85.208.199]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-490-23R9xMv0OK6Ujdc0fb5Wtw-1; Fri, 05 May 2023 05:55:08 -0400 X-MC-Unique: 23R9xMv0OK6Ujdc0fb5Wtw-1 Received: by mail-lj1-f199.google.com with SMTP id 38308e7fff4ca-2ac8393dd5eso4637411fa.3 for ; Fri, 05 May 2023 02:55:08 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1683280507; x=1685872507; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=Y8aSmsw6UaEQgizfVTzgLZMP1MPI2mESuG1ZPhmIPas=; b=HYXbrOl7+dSbvc9TysteQJp7fJptI41rHgg8radQDfP9xKhr6lqC1JVD9mxq1kS0HS 2F1+CnqcwRDf1MFl5IDoVQIsUays82gBZVI6a/cQDw0vljIgOr1X1aqkUVDsnJ5YAKmu f8u/0d0VP62Rttjv5pozo2tElmCd4VvQNB0aOTuR7/NdZeUOGxp5Alc0wcgUGMadM5Z4 CdIcHDFlsYp1kR2ZRN/hpmKriycEz2CR7fiCgz0N4k7mFjIRcdbsDDqTHNfiXrx4XaOG 6ft35b0wmfe2zW/c7RCoSU4sPRkseuXscINK3sosTdNEAliG5fj9CK5Oidpr2RKoGfEx BD/g== X-Gm-Message-State: AC+VfDwERswW3QKUTTz4atXhN5DXP2stBNtjAb6S7i4FnT1W3Qtqub6h S9m1qWIdr1yo1NFJTglPxqfDtXaBSaouESZhijyLysmwOl0s2FKTfOuZOrJj0qsoSsTP/Zn3VgN 0Z3kkRvjuDyx3uGvtNaZIlvr1dhcoQZI= X-Received: by 2002:a2e:9159:0:b0:2ab:6e23:ef71 with SMTP id q25-20020a2e9159000000b002ab6e23ef71mr285230ljg.37.1683280507034; Fri, 05 May 2023 02:55:07 -0700 (PDT) X-Google-Smtp-Source: ACHHUZ7cI00Qb62pLpyB1G2D8A9dYTvkbvkF2A3S50CjKFaHgk4gcq6qb3w8PVpOjR50cYiXcfMsgqQLQbFMMNDUQi0= X-Received: by 2002:a2e:9159:0:b0:2ab:6e23:ef71 with SMTP id q25-20020a2e9159000000b002ab6e23ef71mr285220ljg.37.1683280506746; Fri, 05 May 2023 02:55:06 -0700 (PDT) MIME-Version: 1.0 References: <87cz3fw1uh.fsf@oldenburg.str.redhat.com> In-Reply-To: <87cz3fw1uh.fsf@oldenburg.str.redhat.com> From: Jonathan Wakely Date: Fri, 5 May 2023 10:54:55 +0100 Message-ID: Subject: Re: [libstdc++] use strtold for from_chars even without locale To: Florian Weimer Cc: "Jonathan Wakely via Libstdc++" , Alexandre Oliva , gcc-patches@gcc.gnu.org, Patrick Palka X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Type: multipart/mixed; boundary="000000000000a9aa2005faef4854" X-Spam-Status: No, score=-12.1 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,GIT_PATCH_0,HTML_MESSAGE,RCVD_IN_DNSWL_NONE,RCVD_IN_MSPIKE_H2,SPF_HELO_NONE,SPF_NONE,TXREP,T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: --000000000000a9aa2005faef4854 Content-Type: multipart/alternative; boundary="000000000000a9aa1f05faef4852" --000000000000a9aa1f05faef4852 Content-Type: text/plain; charset="UTF-8" On Fri, 5 May 2023 at 10:43, Florian Weimer wrote: > * Jonathan Wakely via Libstdc: > > > We could use strtod for a single-threaded target (i.e. > > !defined(_GLIBCXX_HAS_GTHREADS) by changing the global locale using > > setlocale, instead of changing the per-thread locale using uselocale. > > This is not generally safe because the call to setlocale is still > observable to applications in principle because a previous pointer > returned from setlocale they have store could be invalidated. > > Ah yes, good point, thanks. I think that's a non-starter then. I still think using RAII makes the from_chars_impl function easier to read, so here's a version of that patch without the single-threaded conditions. --000000000000a9aa1f05faef4852-- --000000000000a9aa2005faef4854 Content-Type: text/plain; charset="US-ASCII"; name="patch.txt" Content-Disposition: attachment; filename="patch.txt" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lhadqs3t0 Y29tbWl0IDRkYzViODg2NGVjNTI3ZTY5OWQzNTg4MGZiYzcwNjE1NzExM2Y5 MmIKQXV0aG9yOiBKb25hdGhhbiBXYWtlbHkgPGp3YWtlbHlAcmVkaGF0LmNv bT4KRGF0ZTogICBUaHUgTWF5IDQgMTU6MjI6MDcgMjAyMwoKICAgIGxpYnN0 ZGMrKzogVXNlIFJBSUkgdHlwZXMgaW4gc3RydG9kLWJhc2VkIHN0ZDo6ZnJv bV9jaGFycyBpbXBsZW1lbnRhdGlvbgogICAgCiAgICBUaGlzIGFkZHMgYXV0 b19sb2NhbGUgYW5kIGF1dG9fZmVyb3VuZGluZyB0eXBlcyB0byB1c2UgUkFJ SSBmb3IgY2hhbmdpbmcKICAgIGFuZCByZXN0b3JpbmcgdGhlIGxvY2FsIGFu ZCBmbG9hdGluZy1wb2ludCBlbnZpcm9ubWVudCB3aGVuIHVzaW5nIHN0cnRv ZAogICAgdG8gaW1wbGVtZW50IHN0ZDo6ZnJvbV9jaGFycy4KICAgIAogICAg VGhlIGRlc3RydWN0b3JzIGZvciB0aGUgUkFJSSBvYmplY3RzIHJ1biBzbGln aHRseSBsYXRlciB0aGFuIHRoZQogICAgcHJldmlvdXMgc3RhdGVtZW50cyB0 aGF0IHJlc3RvcmVkIHRoZSBsb2NhbGUvZmVudiwgYnV0IHRoZSBkaWZmZXJl bmNlcwogICAgYXJlIGp1c3Qgc29tZSB0cml2aWFsIGFzc2lnbm1lbnRzIGFu ZCBhbiBpc2luZiBjYWxsLgogICAgCiAgICBsaWJzdGRjKystdjMvQ2hhbmdl TG9nOgogICAgCiAgICAgICAgICAgICogc3JjL2MrKzE3L2Zsb2F0aW5nX2Zy b21fY2hhcnMuY2MgW1VTRV9TVFJUT0RfRk9SX0ZST01fQ0hBUlNdCiAgICAg ICAgICAgIChhdXRvX2xvY2FsZSwgYXV0b19mZXJvdW5kaW5nKTogTmV3IGNs YXNzIHR5cGVzLgogICAgICAgICAgICAoZnJvbV9jaGFyc19pbXBsKTogVXNl IGF1dG9fbG9jYWxlIGFuZCBhdXRvX2Zlcm91bmRpbmcuCgpkaWZmIC0tZ2l0 IGEvbGlic3RkYysrLXYzL3NyYy9jKysxNy9mbG9hdGluZ19mcm9tX2NoYXJz LmNjIGIvbGlic3RkYysrLXYzL3NyYy9jKysxNy9mbG9hdGluZ19mcm9tX2No YXJzLmNjCmluZGV4IDc4YjlkOTJjZGMwLi43YjNiZGY0NDVlMyAxMDA2NDQK LS0tIGEvbGlic3RkYysrLXYzL3NyYy9jKysxNy9mbG9hdGluZ19mcm9tX2No YXJzLmNjCisrKyBiL2xpYnN0ZGMrKy12My9zcmMvYysrMTcvZmxvYXRpbmdf ZnJvbV9jaGFycy5jYwpAQCAtNTk3LDYgKzU5Nyw2OSBAQCBuYW1lc3BhY2UK ICAgICByZXR1cm4gYnVmLmNfc3RyKCk7CiAgIH0KIAorICAvLyBSQUlJIHR5 cGUgdG8gY2hhbmdlIGFuZCByZXN0b3JlIHRoZSBsb2NhbGUuCisgIHN0cnVj dCBhdXRvX2xvY2FsZQorICB7CisjaWYgX0dMSUJDWFhfSEFWRV9VU0VMT0NB TEUKKyAgICAvLyBXaGVuIHdlIGhhdmUgdXNlbG9jYWxlIHdlIGNhbiBjaGFu Z2UgdGhlIGN1cnJlbnQgdGhyZWFkJ3MgbG9jYWxlLgorICAgIGxvY2FsZV90 IGxvYzsKKyAgICBsb2NhbGVfdCBvcmlnOworCisgICAgYXV0b19sb2NhbGUo KQorICAgIDogbG9jKDo6bmV3bG9jYWxlKExDX0FMTF9NQVNLLCAiQyIsIChs b2NhbGVfdCkwKSkKKyAgICB7CisgICAgICBpZiAobG9jKQorCW9yaWcgPSA6 OnVzZWxvY2FsZShsb2MpOworICAgICAgZWxzZQorCWVjID0gZXJyY3tlcnJu b307CisgICAgfQorCisgICAgfmF1dG9fbG9jYWxlKCkKKyAgICB7CisgICAg ICBpZiAobG9jKQorCXsKKwkgIDo6dXNlbG9jYWxlKG9yaWcpOworCSAgOjpm cmVlbG9jYWxlKGxvYyk7CisJfQorICAgIH0KKyNlbHNlCisgICAgLy8gT3Ro ZXJ3aXNlLCB3ZSBjYW4ndCBjaGFuZ2UgdGhlIGxvY2FsZSBhbmQgc28gc3Ry dG9kIGNhbid0IGJlIHVzZWQuCisgICAgYXV0b19sb2NhbGUoKSA9IGRlbGV0 ZTsKKyNlbmRpZgorCisgICAgZXhwbGljaXQgb3BlcmF0b3IgYm9vbCgpIGNv bnN0IG5vZXhjZXB0IHsgcmV0dXJuIGVjID09IGVycmN7fTsgfQorCisgICAg ZXJyYyBlY3t9OworCisgICAgYXV0b19sb2NhbGUoY29uc3QgYXV0b19sb2Nh bGUmKSA9IGRlbGV0ZTsKKyAgICBhdXRvX2xvY2FsZSYgb3BlcmF0b3I9KGNv bnN0IGF1dG9fbG9jYWxlJikgPSBkZWxldGU7CisgIH07CisKKyAgLy8gUkFJ SSB0eXBlIHRvIGNoYW5nZSBhbmQgcmVzdG9yZSB0aGUgZmxvYXRpbmctcG9p bnQgZW52aXJvbm1lbnQuCisgIHN0cnVjdCBhdXRvX2Zlcm91bmRpbmcKKyAg eworI2lmIF9HTElCQ1hYX1VTRV9DOTlfRkVOVl9UUjEgJiYgZGVmaW5lZChG RV9UT05FQVJFU1QpCisgICAgY29uc3QgaW50IHJvdW5kaW5nID0gc3RkOjpm ZWdldHJvdW5kKCk7CisKKyAgICBhdXRvX2Zlcm91bmRpbmcoKQorICAgIHsK KyAgICAgIGlmIChyb3VuZGluZyAhPSBGRV9UT05FQVJFU1QpCisJc3RkOjpm ZXNldHJvdW5kKEZFX1RPTkVBUkVTVCk7CisgICAgfQorCisgICAgfmF1dG9f ZmVyb3VuZGluZygpCisgICAgeworICAgICAgaWYgKHJvdW5kaW5nICE9IEZF X1RPTkVBUkVTVCkKKwlzdGQ6OmZlc2V0cm91bmQocm91bmRpbmcpOworICAg IH0KKyNlbHNlCisgICAgYXV0b19mZXJvdW5kaW5nKCkgPSBkZWZhdWx0Owor I2VuZGlmCisKKyAgICBhdXRvX2Zlcm91bmRpbmcoY29uc3QgYXV0b19mZXJv dW5kaW5nJikgPSBkZWxldGU7CisgICAgYXV0b19mZXJvdW5kaW5nJiBvcGVy YXRvcj0oY29uc3QgYXV0b19mZXJvdW5kaW5nJikgPSBkZWxldGU7CisgIH07 CisKICAgLy8gQ29udmVydCB0aGUgTlRCUyBgc3RyYCB0byBhIGZsb2F0aW5n LXBvaW50IHZhbHVlIG9mIHR5cGUgYFRgLgogICAvLyBJZiBgc3RyYCBjYW5u b3QgYmUgY29udmVydGVkLCBgdmFsdWVgIGlzIHVuY2hhbmdlZCBhbmQgYDBg IGlzIHJldHVybmVkLgogICAvLyBPdGhlcndpc2UsIGxldCBOIGJlIHRoZSBu dW1iZXIgb2YgY2hhcmFjdGVycyBjb25zdW1lZCBmcm9tIGBzdHJgLgpAQCAt NjA3LDE2ICs2NzAsMTEgQEAgbmFtZXNwYWNlCiAgIHB0cmRpZmZfdAogICBm cm9tX2NoYXJzX2ltcGwoY29uc3QgY2hhciogc3RyLCBUJiB2YWx1ZSwgZXJy YyYgZWMpIG5vZXhjZXB0CiAgIHsKLSAgICBpZiAobG9jYWxlX3QgbG9jID0g OjpuZXdsb2NhbGUoTENfQUxMX01BU0ssICJDIiwgKGxvY2FsZV90KTApKSBb W2xpa2VseV1dCisgICAgYXV0b19sb2NhbGUgbG9jOworCisgICAgaWYgKGxv YykKICAgICAgIHsKLQlsb2NhbGVfdCBvcmlnID0gOjp1c2Vsb2NhbGUobG9j KTsKLQotI2lmIF9HTElCQ1hYX1VTRV9DOTlfRkVOVl9UUjEgJiYgZGVmaW5l ZChGRV9UT05FQVJFU1QpCi0JY29uc3QgaW50IHJvdW5kaW5nID0gc3RkOjpm ZWdldHJvdW5kKCk7Ci0JaWYgKHJvdW5kaW5nICE9IEZFX1RPTkVBUkVTVCkK LQkgIHN0ZDo6ZmVzZXRyb3VuZChGRV9UT05FQVJFU1QpOwotI2VuZGlmCi0K KwlhdXRvX2Zlcm91bmRpbmcgcm91bmRpbmc7CiAJY29uc3QgaW50IHNhdmVf ZXJybm8gPSBlcnJubzsKIAllcnJubyA9IDA7CiAJY2hhciogZW5kcHRyOwpA QCAtNjQ3LDE0ICs3MDUsNiBAQCBuYW1lc3BhY2UKICNlbmRpZgogCWNvbnN0 IGludCBjb252X2Vycm5vID0gc3RkOjpfX2V4Y2hhbmdlKGVycm5vLCBzYXZl X2Vycm5vKTsKIAotI2lmIF9HTElCQ1hYX1VTRV9DOTlfRkVOVl9UUjEgJiYg ZGVmaW5lZChGRV9UT05FQVJFU1QpCi0JaWYgKHJvdW5kaW5nICE9IEZFX1RP TkVBUkVTVCkKLQkgIHN0ZDo6ZmVzZXRyb3VuZChyb3VuZGluZyk7Ci0jZW5k aWYKLQotCTo6dXNlbG9jYWxlKG9yaWcpOwotCTo6ZnJlZWxvY2FsZShsb2Mp OwotCiAJY29uc3QgcHRyZGlmZl90IG4gPSBlbmRwdHIgLSBzdHI7CiAJaWYg KGNvbnZfZXJybm8gPT0gRVJBTkdFKSBbW3VubGlrZWx5XV0KIAkgIHsKQEAg LTY3NSw4ICs3MjUsOCBAQCBuYW1lc3BhY2UKIAkgIH0KIAlyZXR1cm4gbjsK ICAgICAgIH0KLSAgICBlbHNlIGlmIChlcnJubyA9PSBFTk9NRU0pCi0gICAg ICBlYyA9IGVycmM6Om5vdF9lbm91Z2hfbWVtb3J5OworICAgIGVsc2UKKyAg ICAgIGVjID0gbG9jLmVjOwogCiAgICAgcmV0dXJuIDA7CiAgIH0K --000000000000a9aa2005faef4854--