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 module dstress.run.bug_20041226_C;
|
|
11
|
678
|
12 void dummy(...){
|
219
|
13 }
|
|
14
|
|
15 struct vec3{
|
|
16 vec3 opSub(vec3 a){
|
|
17 vec3 x;
|
|
18 return x;
|
|
19 }
|
|
20 }
|
|
21
|
|
22 struct Face{
|
|
23 vec3 a;
|
|
24 }
|
|
25
|
|
26 struct Mesh{
|
|
27 Face[] faces;
|
|
28 }
|
|
29
|
|
30 struct GeomObject{
|
|
31 Mesh mesh;
|
1559
|
32 string name;
|
|
33 vec3 xlate;
|
219
|
34 }
|
|
35
|
|
36 class AseLoader{
|
|
37 this(){
|
|
38 GeomObject go;
|
|
39 go.name = "NODE";
|
|
40 geomObjects ~= go;
|
|
41 }
|
|
42
|
|
43 GeomObject[] geomObjects;
|
|
44 }
|
|
45
|
|
46
|
|
47 void extractTriangles(GeomObject geomObj){
|
|
48 void foobar(){
|
|
49 try{
|
678
|
50 dummy("name: ", geomObj.name);
|
219
|
51
|
|
52 return; // avoid accessing the array with 0 elements in the next line
|
|
53 geomObj.mesh.faces[0].a - geomObj.xlate; // when this line is removed, the bug doesn't appear
|
|
54 }catch(Object err){
|
|
55 throw err;
|
|
56 }
|
|
57 }
|
|
58
|
|
59 foobar();
|
|
60 }
|
|
61
|
|
62 int main(){
|
|
63 try{
|
|
64 AseLoader al = new AseLoader;
|
|
65
|
|
66 foreach(GeomObject go; al.geomObjects){
|
678
|
67 dummy("processing ", go.name);
|
219
|
68 extractTriangles(go);
|
|
69 }
|
|
70 }catch(Object err){
|
678
|
71 dummy("Exception caught:", err);
|
219
|
72 }
|
|
73
|
|
74 return 0;
|
|
75 }
|
678
|
76
|