X-Git-Url: http://git.hungrycats.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;ds=sidebyside;f=hacks%2Fglx%2Fpolyhedra.c;h=26f66d3a5338d232eba795ff55695ba0786b8146;hb=ec8d2b32b63649e6d32bdfb306eda062769af823;hp=72538b34a0042e35b2746ea83c7d10c8804e64a9;hpb=49f5b54f312fe4ac2e9bc47581a72451bd0e8439;p=xscreensaver diff --git a/hacks/glx/polyhedra.c b/hacks/glx/polyhedra.c index 72538b34..26f66d3a 100644 --- a/hacks/glx/polyhedra.c +++ b/hacks/glx/polyhedra.c @@ -91,23 +91,23 @@ extern const char *progname; } while(0) #define Malloc(lvalue,n,type) do {\ - if (!(lvalue = (type*) malloc((n) * sizeof(type)))) \ - Err("out of memory");\ + if (!(lvalue = (type*) calloc((n), sizeof(type)))) \ + abort();\ } while(0) #define Realloc(lvalue,n,type) do {\ if (!(lvalue = (type*) realloc(lvalue, (n) * sizeof(type)))) \ - Err("out of memory");\ + abort();\ } while(0) #define Calloc(lvalue,n,type) do {\ if (!(lvalue = (type*) calloc(n, sizeof(type))))\ - Err("out of memory");\ + abort();\ } while(0) #define Matalloc(lvalue,n,m,type) do {\ if (!(lvalue = (type**) matalloc(n, (m) * sizeof(type))))\ - Err("out of memory");\ + abort();\ } while(0) #define Sprintfrac(lvalue,x) do {\ @@ -200,6 +200,16 @@ static const struct { * Dihedral Schwarz Triangles (D5 only) ***************************************************************************/ + /* {"3|2 5/2", "xyz", + "xyz", + "xyz", + "", + "", + 0, 0}, +*/ + + + /* (2 2 5) (D1/5) */ /* 1 */ {"2 5|2", "Pentagonal Prism", "Pentagonal Dipyramid", @@ -447,7 +457,7 @@ static const struct { "Catalan Solid", 30, 14}, - /* 33 */ {"2 3 5|", "Truncated Icosidodechedon", + /* 33 */ {"2 3 5|", "Truncated Icosidodecahedron", "Disdyakistriacontahedron", "Icosahedral (I[1])", "Archimedian Solid", @@ -2263,7 +2273,7 @@ construct_polyhedron (Polyhedron *P, Vector *v, int V, Vector *f, int F, facelets++; } else if (P->even != -1) { - if (hit[i]) { + if (hit && hit[i]) { push_face3 (result, P->incid[3][i], P->incid[0][i], ii); push_face3 (result, P->incid[1][i], P->incid[2][i], ii); } else { @@ -2418,7 +2428,7 @@ construct_polyhedra (polyhedron ***polyhedra_ret) int count = 0; polyhedron **result; - Malloc (result, last_uniform * 2 + 1, polyhedron*); + Malloc (result, last_uniform * 2 + 3, polyhedron*); while (index < last_uniform) { char sym[4]; @@ -2443,5 +2453,6 @@ construct_polyhedra (polyhedron ***polyhedra_ret) } *polyhedra_ret = result; + count++; /* leave room for teapot */ return count; }