Providing implicit conversion of - memory-safety

bachmeier no at spam.net
Tue Jan 23 17:54:25 UTC 2024


On Tuesday, 23 January 2024 at 12:34:38 UTC, Nick Treleaven wrote:

> But I'm strongly in favour of catching any bugs at compile-time 
> (and have been since before I discovered D). I just object to 
> anyone trying to downgrade the importance of automated 
> memory-safety checking.

I'm not downgrading the importance of memory safety. All I'm 
saying is that you can't sell D as a safe language if has bugs 
like this.

Here's a reduced version of one of the most bizarre bugs I've 
dealt with in any language. The only reason I didn't move on to 
another language was because I was too busy at the time.

The code allows for initial values if the index is less than 0, 
otherwise it returns the element.

```
import std;

double value(T)(T index, double * x) {
   if (index - 5 < 0) {
     return 0.0;
   } else {
     return x[index-5];
   }
}

void main() {
   double[] v = [1.1, 2.2, 3.3];
   // Works
   writeln(value(3, v.ptr));
   // Lucky: program segfaults
   writeln(value(v.length, v.ptr));
}
```

I noticed this behavior only because the program crashes. Once I 
figured out what was going on, I realized that the thousands of 
lines of code I had already written needed to be checked and 
possibly rewritten. If only I had a compiler to do that for me.


More information about the Digitalmars-d-learn mailing list