http://www.jwz.org/xscreensaver/xscreensaver-5.13.tar.gz
[xscreensaver] / hacks / glx / polyhedra.c
index 72538b34a0042e35b2746ea83c7d10c8804e64a9..542dd1ec1a6d425bf873f31be4e598f9b80a3486 100644 (file)
@@ -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 {\
@@ -447,7 +447,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 +2263,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 +2418,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 +2443,6 @@ construct_polyhedra (polyhedron ***polyhedra_ret)
   }
 
   *polyhedra_ret = result;
+  count++; /* leave room for teapot */
   return count;
 }