Bad array indexing is considered deadly

ketmar via Digitalmars-d digitalmars-d at puremagic.com
Wed May 31 06:54:25 PDT 2017


Steven Schveighoffer wrote:

> On 5/31/17 9:37 AM, Adam D. Ruppe wrote:
>> On Wednesday, 31 May 2017 at 13:04:52 UTC, Steven Schveighoffer wrote:
>>> What are your thoughts? Have you run into this? If so, how did you
>>> solve it?
>>
>> I don't use vibe, but my cgi.d just catches RangeError, kills the
>> individual connection, and lets the others carry on. Can you do the same
>> thing?
>
> There are a couple issues with this. At least from the perspective of 
> vibe.d attempting to be a mainstream base library.
>
> 1. You can mark a function nothrow that throws a RangeError. So the 
> compiler is free to assume the function won't throw and build faster code 
> that won't properly clean up if an Error is thrown.
>
> 2. Technically, there is no guarantee by the runtime to unwind the stack. 
> So at some point, your workaround may not even work. And even if it does, 
> things like RAII may not work.
>
> -Steve

that is, the question reduces to "should out-of-bounds be Error or Exception"?

i myself see no easy way to customize this with language attribute 
(new/delete disaster immediately comes to mind). so i'd say: "create your 
own array wrapper/implementation, and hope that all the functions you need 
are rangified, so they'll be able to work with YourArray".


More information about the Digitalmars-d mailing list