[phobos] phobos commit, revision 1930

Steve Schveighoffer schveiguy at yahoo.com
Thu Aug 26 10:16:38 PDT 2010


The constructor uses arr.capacity to determine how much it can append.

assumeSafeAppend will ensure that arr.capacity is as large as possible, so yes, 
calling before creating the Appender will maximize the capacity, regardless of 
whether it will stomp or not.

One thing that Appender will do, which is bad, but I'm not sure we need to care, 
it can be given a string literal, and then try to write over the string literal 
like this:

auto app = appender("hello");
// app.put('c'); // this would be ok
app.clear();
app.put('c'); // segfault on Linux

I'm not sure how to get around this.  I thought of checking the heap to see if 
it owns the pointer, but then you disallow useful things like using a 
stack-allocated buffer.  I think this case may be uncommon enough to not care.

-Steve

>
>From: David Simcha <dsimcha at gmail.com>
>To: Discuss the phobos library for D <phobos at puremagic.com>
>Sent: Thu, August 26, 2010 1:10:31 PM
>Subject: Re: [phobos] phobos commit, revision 1930
>
>Nice work.  One small question/possible feature request, though:  Will calling 
>assumeSafeAppend() on an array before constructing an Appender using it prevent 

>it from being reallocated on the first append?  If not, can Appender have some 
>kind of assumeSafeAppend workaround in it?


      


More information about the phobos mailing list