219
|
1 // $HeadURL$
|
|
2 // $Date$
|
|
3 // $Author$
|
|
4
|
|
5 // @author@ h3r3tic <foo@bar.baz>
|
|
6 // @date@ 2004-12-26
|
|
7 // @uri@ news:cqmufn$26oj$1@digitaldaemon.com
|
1487
|
8 // @uri@ http://www.digitalmars.com/pnews/read.php?server=news.digitalmars.com&group=digitalmars.D.bugs&artnum=2606
|
219
|
9
|
|
10
|
|
11 module dstress.run.bug_20041226_A;
|
|
12
|
678
|
13 void dummy(...){
|
219
|
14 }
|
|
15
|
|
16 struct vec3{
|
|
17 vec3 opSub(vec3 a){
|
|
18 vec3 x;
|
|
19 return x;
|
|
20 }
|
|
21 }
|
|
22
|
|
23 struct Face{
|
|
24 vec3 a;
|
|
25 }
|
|
26
|
|
27 struct Mesh{
|
|
28 Face[] faces;
|
|
29 }
|
|
30
|
|
31 struct GeomObject{
|
|
32 Mesh mesh;
|
1559
|
33 string name;
|
|
34 vec3 xlate;
|
219
|
35 }
|
|
36
|
|
37 class AseLoader{
|
|
38 this(){
|
|
39 GeomObject go;
|
|
40 go.name = "NODE";
|
|
41 geomObjects ~= go;
|
|
42 }
|
|
43
|
|
44 GeomObject[] geomObjects;
|
|
45 }
|
|
46
|
|
47
|
|
48 void extractTriangles(GeomObject geomObj){
|
|
49 void foobar(){
|
|
50 try{
|
1269
|
51 dummy("name: ", geomObj.name);
|
219
|
52
|
|
53 return; // avoid accessing the array with 0 elements in the next line
|
|
54 geomObj.mesh.faces[0].a - geomObj.xlate; // when this line is removed, the bug doesn't appear
|
|
55 }catch(Object err){
|
|
56 throw err;
|
|
57 }
|
|
58 }
|
|
59
|
|
60 foobar();
|
|
61 }
|
|
62
|
|
63 int main(){
|
|
64 try{
|
|
65 AseLoader al = new AseLoader;
|
|
66
|
|
67 foreach(GeomObject go; al.geomObjects){
|
678
|
68 dummy("processing ", go.name);
|
219
|
69 extractTriangles(go);
|
|
70 }
|
|
71 }catch(Object err){
|
678
|
72 dummy("Exception caught:", err);
|
219
|
73 }
|
|
74
|
|
75 return 0;
|
|
76 }
|
678
|
77
|