blob: 60fc0c69de2f02069b1e1157e94cc6e920d3111f [file] [log] [blame]
immutable(T)[] assumeUnique(T)(ref T[] array) pure nothrow
{
auto result = cast(immutable(T)[]) array;
array = null;
return result;
}
pure nothrow
private string escapeShellArguments()
{
char[] buf;
@safe nothrow
char[] allocator(size_t size)
{
return buf = new char[size];
}
escapeShellArgument!allocator("foo");
return assumeUnique(buf);
}
@safe nothrow
auto escapeShellArgument(alias allocator)(in char[] arg)
{
auto buf = allocator(4);
buf[0] = 'f';
buf[1] = 'o';
buf[2] = 'o';
buf[3] = '\0';
}
void main()
{
string res = escapeShellArguments();
if (res != "foo\0") assert(0);
}