[PATCH] libstdc++: implement LWG3662 basic_string::append/assign(NTBS, pos, n) suboptimal
Nathan Myers
ncm@cantrip.org
Wed Jul 1 15:17:36 GMT 2026
On 7/1/26 11:08 AM, Jonathan Wakely wrote:
> On Wed, 1 Jul 2026 at 15:47, Tomasz Kaminski <tkaminsk@redhat.com> wrote:
>>
>> Are the following checks correct? I think we need string of at least length __pos + __len.
>
> The macro is defined as:
> # define __glibcxx_requires_string_len(_String,_Len) \
> _GLIBCXX_DEBUG_PEDASSERT(_String != 0 || _Len == 0)
>
> So it says we can't have a null pointer unless n==0 is true. I think
> that's the right check here.
>
>
>
>> __glibcxx_requires_string_len(__s, __n);
I was a little worried about
return assign(__sv_type(__s).substr(__pos, __n));
It will scan all the way to the end of __s to make the string_view,
and then only use __n of that. Shouldn't it limit the size of the
string_view?
Maybe to __pos + __n; or even to __n and start it at __s + __pos
if predconditions allow.
>> On Wed, Jul 1, 2026 at 4:41 PM Yuao Ma <addr2line@gmail.com> wrote:
>>>
>>> Hi!
>>>
>>> This patch implements LWG3662 for C++11 ABI and COW ABI of strings.
>>>
>>> Tested on x86_64 linux, ok for trunk?
>>>
>>> Thanks,
>>> Yuao
>
More information about the Libstdc++
mailing list