[{"id":3676895,"web_url":"http://patchwork.ozlabs.org/comment/3676895/","msgid":"<CAH6eHdRt=iDOx+LbGwx=UyKuiEpa4O_iNck2ibBAf+F_eVtKFA@mail.gmail.com>","list_archive_url":null,"date":"2026-04-13T19:29:59","subject":"Re: [PATCH] libstdc++: Small allocator fixes","submitter":{"id":4329,"url":"http://patchwork.ozlabs.org/api/people/4329/","name":"Jonathan Wakely","email":"jwakely.gcc@gmail.com"},"content":"On Mon, 13 Apr 2026 at 20:05, Nathan Myers <ncm@cantrip.org> wrote:\n>\n> Since 2022, the constexpr branch of std::allocator::allocate(n)\n> has asked for the wrong size. More recently, allocator_traits\n> allocate_at_least has taken its allocator argument by value,\n> incorrectly.\n>\n> libstdc++-v3/ChangeLog:\n>         * include/bits/allocator.h (allocate): When constexpr, allocate bytes.\n>         * include/bits/alloc_traits.h (allocate_at_least): Take allocator\n>         argument by reference, per spec.\n> ---\n>  libstdc++-v3/include/bits/alloc_traits.h | 2 +-\n>  libstdc++-v3/include/bits/allocator.h    | 2 +-\n>  2 files changed, 2 insertions(+), 2 deletions(-)\n>\n> diff --git a/libstdc++-v3/include/bits/alloc_traits.h b/libstdc++-v3/include/bits/alloc_traits.h\n> index 2be8ed561d4..e4e0f1608de 100644\n> --- a/libstdc++-v3/include/bits/alloc_traits.h\n> +++ b/libstdc++-v3/include/bits/alloc_traits.h\n> @@ -670,7 +670,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION\n>         *  Returns `a.allocate_at_least(n)`.\n>        */\n>        [[nodiscard]] static constexpr auto\n> -      allocate_at_least(allocator_type __a, size_type __n)\n> +      allocate_at_least(allocator_type& __a, size_type __n)\n\nThis part is OK.\n\n>         -> allocation_result<pointer, size_type>\n>        { return __a.allocate_at_least(__n); }\n>  #endif\n> diff --git a/libstdc++-v3/include/bits/allocator.h b/libstdc++-v3/include/bits/allocator.h\n> index 9c22c805ebe..ae735605f67 100644\n> --- a/libstdc++-v3/include/bits/allocator.h\n> +++ b/libstdc++-v3/include/bits/allocator.h\n> @@ -200,7 +200,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION\n>           {\n>             if (__builtin_mul_overflow(__n, sizeof(_Tp), &__n))\n\nThis line performs n * sizeof(T) and stores the result in n (returning\ntrue if it overflows).\n\nSo it's equivalent the n *= sizeof(T).\n\n>               std::__throw_bad_array_new_length();\n> -           return static_cast<_Tp*>(::operator new(__n));\n> +           return static_cast<_Tp*>(::operator new(__n * sizeof(_Tp)));\n\nSo this is wrong.\n\n>           }\n>\n>         return __allocator_base<_Tp>::allocate(__n, 0);\n> --\n> 2.53.0\n>","headers":{"Return-Path":"<gcc-patches-bounces~incoming=patchwork.ozlabs.org@gcc.gnu.org>","X-Original-To":["incoming@patchwork.ozlabs.org","gcc-patches@gcc.gnu.org"],"Delivered-To":["patchwork-incoming@legolas.ozlabs.org","gcc-patches@gcc.gnu.org"],"Authentication-Results":["legolas.ozlabs.org;\n\tdkim=pass (2048-bit key;\n unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256\n header.s=20251104 header.b=Dfq9VI80;\n\tdkim-atps=neutral","legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=gcc.gnu.org\n (client-ip=2620:52:6:3111::32; helo=vm01.sourceware.org;\n envelope-from=gcc-patches-bounces~incoming=patchwork.ozlabs.org@gcc.gnu.org;\n receiver=patchwork.ozlabs.org)","sourceware.org;\n\tdkim=pass (2048-bit key,\n unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256\n header.s=20251104 header.b=Dfq9VI80","sourceware.org;\n dmarc=pass (p=none dis=none) header.from=gmail.com","sourceware.org; spf=pass smtp.mailfrom=gmail.com","server2.sourceware.org;\n arc=pass smtp.remote-ip=209.85.208.170"],"Received":["from vm01.sourceware.org (vm01.sourceware.org\n [IPv6:2620:52:6:3111::32])\n\t(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)\n\t key-exchange x25519 server-signature ECDSA (secp384r1) server-digest SHA384)\n\t(No client certificate requested)\n\tby legolas.ozlabs.org (Postfix) with ESMTPS id 4fvcvP5g0pz1yDG\n\tfor <incoming@patchwork.ozlabs.org>; Tue, 14 Apr 2026 05:30:41 +1000 (AEST)","from vm01.sourceware.org (localhost [127.0.0.1])\n\tby sourceware.org (Postfix) with ESMTP id C81F04BA2E09\n\tfor <incoming@patchwork.ozlabs.org>; Mon, 13 Apr 2026 19:30:39 +0000 (GMT)","from mail-lj1-f170.google.com (mail-lj1-f170.google.com\n [209.85.208.170])\n by sourceware.org (Postfix) with ESMTPS id 514034BA2E07\n for <gcc-patches@gcc.gnu.org>; Mon, 13 Apr 2026 19:30:13 +0000 (GMT)","by mail-lj1-f170.google.com with SMTP id\n 38308e7fff4ca-38dd9f11a09so44102861fa.2\n for <gcc-patches@gcc.gnu.org>; Mon, 13 Apr 2026 12:30:13 -0700 (PDT)"],"DKIM-Filter":["OpenDKIM Filter v2.11.0 sourceware.org C81F04BA2E09","OpenDKIM Filter v2.11.0 sourceware.org 514034BA2E07"],"DMARC-Filter":"OpenDMARC Filter v1.4.2 sourceware.org 514034BA2E07","ARC-Filter":"OpenARC Filter v1.0.0 sourceware.org 514034BA2E07","ARC-Seal":["i=2; a=rsa-sha256; d=sourceware.org; s=key; t=1776108613; cv=pass;\n b=cp6C3+WaxCAz4GXqNim9twNKrBsp0/gXwKSMkqsxBvtrA9ZDQAAsFhsvJE/+IWM1nmQmEcEnvIRght6Kn99boNRjO5IBODJo1zbDp6onny4DsnrdOAqYgDH3dsxbLDpuTWD9/hDZuE/xrzW8r/hDrD7QTWGxdvMaVUIuLNCmynE=","i=1; a=rsa-sha256; t=1776108612; cv=none;\n d=google.com; s=arc-20240605;\n b=S+jaSYJF1Dh+HCl4GuqX3VKUZR6f9iivwsxwB/0B3PbbN2RbgjE/AQUo9J/TdpdcA9\n dGFCX9/FGN4oTWlplGHAzxcDluFAcqQuKOX2iszKb0XugZYXC1u9HiQdrD+8GHFPSPKz\n DTvXNSqChLFf/Mxv6zK/CCuuPrz021eVMxcvX48DXo0Fxa0Abe4p/k4lXuF2ZBFgtLkd\n aIKQV/l3iPnJfub0kWRW6jr/AWIr8qA/HE6TvYISWvpj4Iu2SGlyOOt6tBzoCfTSrIoO\n dVCh9+WPltYAdt+DQVqtEXpOviKjLsQV1IhnAgAC68DAsN4hKHdSiZ5XVxmQDQAtIySv\n 8j7Q=="],"ARC-Message-Signature":["i=2; a=rsa-sha256; d=sourceware.org; s=key;\n t=1776108613; c=relaxed/simple;\n bh=zt0xgTZi6e6dSwb/JVpS+LmlIde9gwGfumlNET70x9w=;\n h=DKIM-Signature:MIME-Version:From:Date:Message-ID:Subject:To;\n b=WR8jU2YNPFE4VHf2FpNaRrJeA2v+1QjRGQ1fmrY7kxgXPYcj+5Aj10Rt2IAmDqk2u7uoVjy+T0s7uF6dc9xc3NM5LkPZjI2RBS5OsQB9qUPCH3s71GqrT6xtN7k02duVS6qj+K/Fc7vLJRzgx6taEguaBmmiD0JWOJ0cbBd373Q=","i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com;\n s=arc-20240605;\n h=cc:to:subject:message-id:date:from:in-reply-to:references\n :mime-version:dkim-signature;\n bh=/83LnLfyRmqpIMaLG0XIQUIE5MeS0MYxMWlj2JfJ6Hk=;\n fh=i/6Hqv1lDfHU2svApWxgooB2cDDu4AMk21cRmhrzE9Q=;\n b=IG6l5qzH4XBCq5+uARjXpxICAEWzSvYj0RdS9E27K4TmZeoWMupw2axN4wKYYpBh/8\n qiZvev7qrgvseaa0rC/sqVq9vHZuDZXucpm63vNxRPvMGviiJwIlOiKPvZhqTI/E6HNL\n 8ihXutpssx/UItutsBl32mygOh+WHk32Pv9bO76JsmvZI0xFISA87oLBZni6u6UTz7kA\n 4OC3b6Prf902qhHBmDz7tDoRJX/Iw2pgZFGKBKGLoZ4m9DhVrFC+TJjkYILqBmchICpN\n WY5IF3SkFUFUmflZpjKswxATCgS7glJcsGPufML5xt0iG6Z8IZYWfTy7XRJFffVlzqY9\n wVnw==; darn=gcc.gnu.org"],"ARC-Authentication-Results":["i=2; server2.sourceware.org","i=1; mx.google.com; arc=none"],"DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n d=gmail.com; s=20251104; t=1776108612; x=1776713412; darn=gcc.gnu.org;\n h=cc:to:subject:message-id:date:from:in-reply-to:references\n :mime-version:from:to:cc:subject:date:message-id:reply-to;\n bh=/83LnLfyRmqpIMaLG0XIQUIE5MeS0MYxMWlj2JfJ6Hk=;\n b=Dfq9VI80ngowsl4IeBGHHWnRSmrSAn2BuQ3pWTOT8x/eKer6fkw5xQsroiUgxichb9\n DZY2iWfqaKqVlcCsD6UscmmI4BVh860bgqmhwYewFU9MsVLaGWtfGqzFtF0WmvnqKmSN\n JHZpXscBo48gKJbIvVPrM/tAf/pUZwN0p+WefqJRqX9WlJLymNYGof8H3DDwI8ZtUF0x\n Y4lPoiAaaaDOy05IGsDk0g7rn5B+PT2LPwTe/k5M3NtjsJQmwjYHJwlakI47agV81F6T\n nfE7uMQZSGghmrgS6N0Dizi21xEg4f4YJ0wetqyEAOC2QEIlc5MUvRb5MlKkyMX/5AUt\n 7IsQ==","X-Google-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n d=1e100.net; s=20251104; t=1776108612; x=1776713412;\n h=cc:to:subject:message-id:date:from:in-reply-to:references\n :mime-version:x-gm-gg:x-gm-message-state:from:to:cc:subject:date\n :message-id:reply-to;\n bh=/83LnLfyRmqpIMaLG0XIQUIE5MeS0MYxMWlj2JfJ6Hk=;\n b=Z71xurstyg2j4Mc4KRxr+ffEMR3F7oLU63GNHrXN2WNZH6KtL1fOawRY4IxbHeE1WI\n FDdjabDXE4C7zQ30VR8Iif2l5EZtP1ck982tJA3pRwL/tbwZ09FLHKJKbPfeTD2GU5BY\n 7W1AZNHm91zD4NHv7ypjwG3pcAhRMZjdoSMiH+gwuNoRXgxMqLnQxXXh+g77AgwaHvVy\n YZQ3J3NMjgEBS5gEt4ar18BhCkVVHo0v1thuA+8sl6sjX1kbJXWvsfc+ff+pIUwHwrg1\n SXXUgy0OBGespFMs5JY92H0KCw7mMikew4+0jMopLCj9UcjsdMzzqIt/VqBeHRWWWn1I\n coHQ==","X-Gm-Message-State":"AOJu0YwXxMBqwXJ1MnnkM8t/EZudhVktGYzjaCY23F6b1dygTrfED+Ya\n 6hFWTbgpiMqZLUS9W6ytN3qqJWkweTxTjzb9fo/OXY9LQ8d6l90YjRD5ECnAarxyPkaNPjKc6xd\n g8WWbXJYzkTGNYS+uQE0rzQ//aN1Ni8tEjA==","X-Gm-Gg":"AeBDiev5A01b8pxtjGbVhuMjyJi0lHdKDgjB83Us8T/YBa1yfEuXYbmFfzeQKU3K+pl\n GXa9r9i+fnGg0zmy7pBZctO94wHYNUkY2lg1H8d1TtODARNPgFiNVWKYBw2rX25E2WtqpKS7Dqv\n K7iDyXYP1jBhsAvoJzRPO+GYfTzDF8NKrfEh/IvPKNgrVGmnfNmYxG6KFkN1A4tmoX84N3P3lG8\n XAMCef9EdpV7QAovmFG4FOCf0IqBRl2Z1wUOQg5SvWu1avnIMxTyLnYeNOoRTI8IHOFlBvMWQnj\n J7f9+T6CPmjfLiHgLyOrKsHwJV6HJapei7V1tckS3KdJdD6Mzic8w6JBXN9+SmvcIhj5S1+/EmS\n EBu4=","X-Received":"by 2002:a2e:8504:0:b0:38d:f627:3a8 with SMTP id\n 38308e7fff4ca-38e4bf9a3e0mr38945781fa.21.1776108611247; Mon, 13 Apr 2026\n 12:30:11 -0700 (PDT)","MIME-Version":"1.0","References":"<20260413190449.109479-1-ncm@cantrip.org>","In-Reply-To":"<20260413190449.109479-1-ncm@cantrip.org>","From":"Jonathan Wakely <jwakely.gcc@gmail.com>","Date":"Mon, 13 Apr 2026 20:29:59 +0100","X-Gm-Features":"AQROBzCQpJYvd4MgGqH87xJO_s74yYkEOrvRNAMuYLxmKHmS8MZ3GzhmzM7VVBw","Message-ID":"\n <CAH6eHdRt=iDOx+LbGwx=UyKuiEpa4O_iNck2ibBAf+F_eVtKFA@mail.gmail.com>","Subject":"Re: [PATCH] libstdc++: Small allocator fixes","To":"Nathan Myers <ncm@cantrip.org>","Cc":"gcc-patches@gcc.gnu.org, libstdc++@gcc.gnu.org","Content-Type":"text/plain; charset=\"UTF-8\"","X-BeenThere":"gcc-patches@gcc.gnu.org","X-Mailman-Version":"2.1.30","Precedence":"list","List-Id":"Gcc-patches mailing list <gcc-patches.gcc.gnu.org>","List-Unsubscribe":"<https://gcc.gnu.org/mailman/options/gcc-patches>,\n <mailto:gcc-patches-request@gcc.gnu.org?subject=unsubscribe>","List-Archive":"<https://gcc.gnu.org/pipermail/gcc-patches/>","List-Post":"<mailto:gcc-patches@gcc.gnu.org>","List-Help":"<mailto:gcc-patches-request@gcc.gnu.org?subject=help>","List-Subscribe":"<https://gcc.gnu.org/mailman/listinfo/gcc-patches>,\n <mailto:gcc-patches-request@gcc.gnu.org?subject=subscribe>","Errors-To":"gcc-patches-bounces~incoming=patchwork.ozlabs.org@gcc.gnu.org"}}]