Confusing behavior involving array operations.
Robert Clipsham
robert at octarineparrot.com
Fri May 14 16:21:07 PDT 2010
On 15/05/10 00:14, Pillsy wrote:
> I have the following program on Mac OS X 10.6.3 running dmd version 2.043:
>
> $ cat if.d
> import std.stdio;
>
> void main (string [] args)
> {
> foreach(arg; args)
> writeln(arg);
>
> auto vec = new double[10];
>
> foreach(i, ref x; vec) { x = cast(double) i; }
>
> if (args.length> 1&& args[1] == "bar") { vec[] *= 0.5; }
> }
>
> This program compiles with no warnings. However, when I run it, I get a bus error regardless of the
> value of the first command-line argument, or whether it's present at all. I also get bus error if I
> eliminate the conditional altogether. AFAICT, the array operation I'm doing on vec is legitimate
> according to
>
> http://www.digitalmars.com/d/2.0/arrays.html
>
> and the fact that the program bombs out regardless of the outcome of the test in the conditional is
> particularly mystifying.
>
> Any help would be greatly appreciated.
>
> Thanks,
> Pillsy
I'm using dmd 2.045 on linux here, and that example works fine, so I'd
guess it's an OS X specific bug if you can't get it working with newer
versions of dmd... There were some issues to do with array operations
that have been fixed recently, so I'd try a newer dmd. If that doesn't
fix it report a bug.
More information about the Digitalmars-d-learn
mailing list