News for hackers. Stuff that matters.
Re:DigitalMars C/C++ Compiler by WalterBright on Wednesday May 23, 2018 @03:40PM (#17137455)
I ask them how much money they've lost on C/C++ buffer overflows in the past, and how much they're willing to lose on them in the future :-)

Heartbleed. A C buffer overflow bug so disastrously expensive it has it's own logo!

(I know C# doesn't have buffer overflows either, but C# is a much bigger change than going to D, and is less portable.)

Re:DigitalMars C/C++ Compiler by MaxBarraclough on Friday May 25, 2018 @05:10AM (#17151824)
Valid point, buffer-overflows can be disastrous and should be easily preventable, or impossible, in a sensible language.

For OpenMW though, it's not a concern. They're building a single-player video game; the input is always trusted. As far as I can see, they made the right call by moving to C++.

Again, I really like the D language - but I can see why a project manager would go with C++.

Re:DigitalMars C/C++ Compiler by earenndil on Wednesday May 23, 2018 @08:04PM (#17139665)
TBF, c++ has std::vector and std::list.
Re:DigitalMars C/C++ Compiler by renox on Thursday May 24, 2018 @11:14AM (#17144791)
And with the "usual" access '[]' std::vector doesn't bound check either, you have to use 'at' for this (except in some library with some flags ), doesn't seem that safe to me!
Re:DigitalMars C/C++ Compiler by MaxBarraclough on Friday May 25, 2018 @04:54AM (#17151753)
Agree. It strikes me as silly that C++ doesn't provide something like a `CHECKED` macro, so that operator[] could always be range-checked in debug/dev builds, but not in release builds. The two-different-methods approach seems awfully clunky - what ends up happening is that no-one uses the `at` method. I see no good reason not to enable range-checks by default in debug builds.

This 'unsafe by default' philosophy isn't universal in C++ though. The smart-pointer class-templates are always thread-safe, despite the possible performance consequences.