Regan Heath wrote: > void foo(char[] pbuffer) > { > //assume this causes reallocation > //assume there is no more space in place > pbuffer ~= "a"; > } > > void main() > { > char[] buffer = "test".dup; > foo(buffer); > buffer[0] = 'a' //crash > } > > Right? No. foo() modifies its copy of pbuffer, which is not the same as buffer.