any news on const/invariant?

Sean Kelly sean at f4.ca
Tue Nov 27 10:59:36 PST 2007


Walter Bright wrote:
> Sean Kelly wrote:
>> Walter Bright wrote:
>>> 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.
>>
>> So we'll have pass by value for arrays?  Nifty.
> 
> Arrgh! There are two things here, the length/ptr, and the array 
> contents. The former is passed by value.

My mistake.  I mis-interpreted the "assume this causes reallocation" 
comment above.


Sean



More information about the Digitalmars-d mailing list