Debug help - Programming in D - extending tail slice terminates sharing unexpectedly. Page 69, 70

monkyyy crazymonkyyy at gmail.com
Mon Oct 20 00:14:50 UTC 2025


On Sunday, 19 October 2025 at 23:27:28 UTC, Brother Bill wrote:
> On Sunday, 19 October 2025 at 22:57:38 UTC, monkyyy wrote:
>> On Sunday, 19 October 2025 at 21:30:40 UTC, Brother Bill wrote:
>>> 
>>> Please guide me to best practices with slice sharing.
>>
>> Treat it as a design flaw, if your project need both slice and 
>> dynamic arrays and your causing spooky bugs, consider wrappers 
>> for slicing that disables appending and dynamic arrays that 
>> slicing returns explicit slices; pass dynamic arrays by ref.
>
> So dynamic base arrays and tail slices that can grow can result 
> in spooky bugs.

Its the confusion of the two into one type

> So would you recommend that when playing with slices to not 
> extend the tail?

If you extend the tail, I wouldnt call it a slice
Im not sure what you want from "tail slices" but maybe this:

```d
struct tailsilce(T){
   T[]* data;
   T[] me; alias me this;
   this(ref T[] data_,int i=0,int j=-1){
     data=&data;
     me=data[i..j==-1?$:j];
   }
   opwhateveritiscalled("~=")(T a){
     data~=a;
   }
}
```

> The workaround for this would be after extending the tail to 
> create a new dynamic array with the extended values, then add 
> the slices back from scratch?

They can just be colored, both views of [] work, its only the 
overlap that causes problems


More information about the Digitalmars-d-learn mailing list