www.digitalmars.com         C & C++   DMDScript  

digitalmars.D - Bug found ??

Hi,
the following code works fine :

import std.stdio;
import test4mod;


char[] d_problem(T)(T x){
	static if(is(T B == B[])) {
		return "[" ~ d_problem(x[0]) ~ "]";
	} else {
		return "bla";
	}
}

void main(char[][] args){
	int[][] x = [[1,2,3]];
	writefln("%s",d_problem(x));
}

The outout is : [[bla]]


If I split this into 2 files :

import std.stdio;
import test4mod;
void main(char[][] args){
	int[][] x = [[1,2,3]];
	writefln("%s",d_problem(x));
}

module test4mod;
char[] d_problem(T)(T x){
	static if(is(T B == B[])) {
		return "[" ~ d_problem(x[0]) ~ "]";
	} else {
		return "bla";
	}
}

If you run this progam, you get a "segmentation fault". A bug ?

It can be corrected :

import std.stdio;
import test4mod;
void main(char[][] args){
	int[][] x = [[1,2,3]];
	writefln("%s",d_problem(x));
}

module test4mod;
char[] d_problem(T)(T x){
     static char[] a = "[",b = "]";
	static if(is(T B == B[])) {
		return a ~ d_problem(x[0]) ~ b;
	} else {
		return "bla";
	}
}

This works fine again.
Mar 03 2007