changeset 219:249516e487f9

h3r3tic <foo@bar.baz> 2004-12-26 news:cqmufn$26oj$1@digitaldaemon.com nntp://digitalmars.com/digitalmars.D.bugs/2606
author thomask
date Thu, 30 Dec 2004 11:02:13 +0000
parents cb22f2d42678
children 8fa24d6682cd
files run/bug_20041226_A.d run/bug_20041226_B.d run/bug_20041226_C.d run/bug_20041226_D.d run/bug_20041226_E.d
diffstat 5 files changed, 398 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/run/bug_20041226_A.d	Thu Dec 30 11:02:13 2004 +0000
@@ -0,0 +1,81 @@
+// $HeadURL$
+// $Date$
+// $Author$
+
+// @author@	h3r3tic <foo@bar.baz>
+// @date@	2004-12-26
+// @uri@	news:cqmufn$26oj$1@digitaldaemon.com
+// @url@	nntp://digitalmars.com/digitalmars.D.bugs/2606
+
+// __DSTRESS_DFLAGS__ -inline
+
+module dstress.run.bug_20041226_A;
+
+version(all){
+	void writefln(...){
+	}
+}else{
+	import std.stdio;
+}
+
+struct vec3{
+	vec3 opSub(vec3 a){
+		vec3 x;
+		return x;
+	}
+}
+
+struct Face{
+	vec3	a;
+}
+
+struct Mesh{
+	Face[]	faces;
+}
+	
+struct GeomObject{
+	Mesh	mesh;
+	char[]	name;
+	vec3		xlate;
+}
+
+class AseLoader{
+	this(){
+		GeomObject go;
+		go.name = "NODE";
+		geomObjects ~= go;
+	}
+	
+	GeomObject[]	geomObjects;
+}
+
+
+void extractTriangles(GeomObject geomObj){
+	void foobar(){
+		try{
+			writefln("name: ", geomObj.name);
+
+			return;  // avoid accessing the array with 0 elements in the next line			
+			geomObj.mesh.faces[0].a - geomObj.xlate;  // when this line is removed, the bug doesn't appear
+		}catch(Object err){
+			throw err;
+		}
+	}
+	
+	foobar();
+}
+
+int main(){
+	try{
+		AseLoader al = new AseLoader;
+	
+		foreach(GeomObject go; al.geomObjects){
+			writefln("processing ", go.name);
+			extractTriangles(go);
+		}
+	}catch(Object err){
+		writefln("Exception caught:", err);
+	}
+	
+	return 0;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/run/bug_20041226_B.d	Thu Dec 30 11:02:13 2004 +0000
@@ -0,0 +1,81 @@
+// $HeadURL$
+// $Date$
+// $Author$
+
+// @author@	h3r3tic <foo@bar.baz>
+// @date@	2004-12-26
+// @uri@	news:cqmufn$26oj$1@digitaldaemon.com
+// @url@	nntp://digitalmars.com/digitalmars.D.bugs/2606
+
+// __DSTRESS_DFLAGS__ -inline -g
+
+module dstress.run.bug_20041226_B;
+
+version(all){
+	void writefln(...){
+	}
+}else{
+	import std.stdio;
+}
+
+struct vec3{
+	vec3 opSub(vec3 a){
+		vec3 x;
+		return x;
+	}
+}
+
+struct Face{
+	vec3	a;
+}
+
+struct Mesh{
+	Face[]	faces;
+}
+	
+struct GeomObject{
+	Mesh	mesh;
+	char[]	name;
+	vec3		xlate;
+}
+
+class AseLoader{
+	this(){
+		GeomObject go;
+		go.name = "NODE";
+		geomObjects ~= go;
+	}
+	
+	GeomObject[]	geomObjects;
+}
+
+
+void extractTriangles(GeomObject geomObj){
+	void foobar(){
+		try{
+			writefln("name: ", geomObj.name);
+
+			return;  // avoid accessing the array with 0 elements in the next line			
+			geomObj.mesh.faces[0].a - geomObj.xlate;  // when this line is removed, the bug doesn't appear
+		}catch(Object err){
+			throw err;
+		}
+	}
+	
+	foobar();
+}
+
+int main(){
+	try{
+		AseLoader al = new AseLoader;
+	
+		foreach(GeomObject go; al.geomObjects){
+			writefln("processing ", go.name);
+			extractTriangles(go);
+		}
+	}catch(Object err){
+		writefln("Exception caught:", err);
+	}
+	
+	return 0;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/run/bug_20041226_C.d	Thu Dec 30 11:02:13 2004 +0000
@@ -0,0 +1,79 @@
+// $HeadURL$
+// $Date$
+// $Author$
+
+// @author@	h3r3tic <foo@bar.baz>
+// @date@	2004-12-26
+// @uri@	news:cqmufn$26oj$1@digitaldaemon.com
+// @url@	nntp://digitalmars.com/digitalmars.D.bugs/2606
+
+module dstress.run.bug_20041226_C;
+
+version(all){
+	void writefln(...){
+	}
+}else{
+	import std.stdio;
+}
+
+struct vec3{
+	vec3 opSub(vec3 a){
+		vec3 x;
+		return x;
+	}
+}
+
+struct Face{
+	vec3	a;
+}
+
+struct Mesh{
+	Face[]	faces;
+}
+	
+struct GeomObject{
+	Mesh	mesh;
+	char[]	name;
+	vec3		xlate;
+}
+
+class AseLoader{
+	this(){
+		GeomObject go;
+		go.name = "NODE";
+		geomObjects ~= go;
+	}
+	
+	GeomObject[]	geomObjects;
+}
+
+
+void extractTriangles(GeomObject geomObj){
+	void foobar(){
+		try{
+			writefln("name: ", geomObj.name);
+
+			return;  // avoid accessing the array with 0 elements in the next line			
+			geomObj.mesh.faces[0].a - geomObj.xlate;  // when this line is removed, the bug doesn't appear
+		}catch(Object err){
+			throw err;
+		}
+	}
+	
+	foobar();
+}
+
+int main(){
+	try{
+		AseLoader al = new AseLoader;
+	
+		foreach(GeomObject go; al.geomObjects){
+			writefln("processing ", go.name);
+			extractTriangles(go);
+		}
+	}catch(Object err){
+		writefln("Exception caught:", err);
+	}
+	
+	return 0;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/run/bug_20041226_D.d	Thu Dec 30 11:02:13 2004 +0000
@@ -0,0 +1,77 @@
+// $HeadURL$
+// $Date$
+// $Author$
+
+// @author@	h3r3tic <foo@bar.baz>
+// @date@	2004-12-26
+// @uri@	news:cqmufn$26oj$1@digitaldaemon.com
+// @url@	nntp://digitalmars.com/digitalmars.D.bugs/2606
+
+// __DSTRESS_DFLAGS__ -inline
+
+module dstress.run.bug_20041226_D;
+
+version(all){
+	void writefln(...){
+	}
+}else{
+	import std.stdio;
+}
+
+struct vec3{
+	vec3 opSub(vec3 a){
+		vec3 x;
+		return x;
+	}
+}
+
+struct Face{
+	vec3	a;
+}
+
+struct Mesh{
+	Face[]	faces;
+}
+	
+struct GeomObject{
+	Mesh	mesh;
+	char[]	name;
+	vec3		xlate;
+}
+
+class AseLoader{
+	this(){
+		GeomObject go;
+		go.name = "NODE";
+		geomObjects ~= go;
+	}
+	
+	GeomObject[]	geomObjects;
+}
+
+
+void extractTriangles(GeomObject geomObj){
+	void foobar(){
+		writefln("name: ", geomObj.name);
+
+		return;  // avoid accessing the array with 0 elements in the next line			
+		geomObj.mesh.faces[0].a - geomObj.xlate;  // when this line is removed, the bug doesn't appear
+	}
+		
+	foobar();
+}
+
+int main(){
+	try{
+		AseLoader al = new AseLoader;
+	
+		foreach(GeomObject go; al.geomObjects){
+			writefln("processing ", go.name);
+			extractTriangles(go);
+		}
+	}catch(Object err){
+		writefln("Exception caught:", err);
+	}
+	
+	return 0;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/run/bug_20041226_E.d	Thu Dec 30 11:02:13 2004 +0000
@@ -0,0 +1,80 @@
+// $HeadURL$
+// $Date$
+// $Author$
+
+// @author@	h3r3tic <foo@bar.baz>
+// @date@	2004-12-26
+// @uri@	news:cqmufn$26oj$1@digitaldaemon.com
+// @url@	nntp://digitalmars.com/digitalmars.D.bugs/2606
+
+// __DSTRESS_DFLAGS__ -inline
+
+module dstress.run.bug_20041226_E;
+
+version(all){
+	void writefln(...){
+	}
+}else{
+	import std.stdio;
+}
+
+struct vec3{
+	vec3 opSub(vec3 a){
+		vec3 x;
+		return x;
+	}
+}
+
+struct Face{
+	vec3	a;
+}
+
+struct Mesh{
+	Face[]	faces;
+}
+	
+struct GeomObject{
+	Mesh	mesh;
+	char[]	name;
+	vec3		xlate;
+}
+
+class AseLoader{
+	this(){
+		GeomObject go;
+		go.name = "NODE";
+		geomObjects ~= go;
+	}
+	
+	GeomObject[]	geomObjects;
+}
+
+
+void extractTriangles(GeomObject geomObj){
+	void foobar(){
+		try{
+			writefln("name: ", geomObj.name);
+
+			return;
+		}catch(Object err){
+			throw err;
+		}
+	}
+	
+	foobar();
+}
+
+int main(){
+	try{
+		AseLoader al = new AseLoader;
+	
+		foreach(GeomObject go; al.geomObjects){
+			writefln("processing ", go.name);
+			extractTriangles(go);
+		}
+	}catch(Object err){
+		writefln("Exception caught:", err);
+	}
+	
+	return 0;
+}