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

Reply via email to