string need to be robust

Jesse Phillips jessekphillips+D at gmail.com
Sun Mar 13 22:53:31 PDT 2011


KennyTM~ Wrote:

> It is already throwing an exception called 
> core.exception.UnicodeException. This even provides you the index where 
> decoding failed.
> 
> (However Phobos is not using it, AFAIK.)
> 
> -----------
> import core.exception, std.stdio, std.conv;
> 
> void main() {
>      char[] s = [0x0f, 0x12,0x34,0x56,0x78,0x9a,0xbc];
>      try {
>          foreach (dchar d; s){}
>      } catch (UnicodeException e) {
>          writefln("error at index %s (%x)", e.idx, to!ubyte(s[e.idx]));
>          // error at index 5 (9a)
>      }
> }
> -----------

foreach does not use the range interface provided by std.array (that I know of). So there should be a bug reported on the current behavior of Access Violation.


More information about the Digitalmars-d mailing list