]> granicus.if.org Git - graphviz/commitdiff
Fix code to work with older versions of C which do no allow declarations like
authorerg <devnull@localhost>
Thu, 16 Aug 2007 18:10:13 +0000 (18:10 +0000)
committererg <devnull@localhost>
Thu, 16 Aug 2007 18:10:13 +0000 (18:10 +0000)
   int b[n];

lib/neatogen/quad_prog_vpsc.c

index 2040e236749435cd2b436de27a77a45006023ce4..b6f6256b908c10f7b5ea51c3c7b7c69b3e8fd38e 100644 (file)
@@ -377,7 +377,11 @@ void generateNonoverlapConstraints(CMajEnvVPSC * e,
     Constraint **csol, **csolptr;
     int i, j, mol = 0;
     int n = e->nv + e->nldv;
+#ifdef WIN32
+    boxf* bb = N_GNEW (n, boxf);
+#else
     boxf bb[n];
+#endif
     boolean genclusters = opt->clusters->nclusters > 0;
     if (genclusters) {
        /* n is the number of real variables, not dummy cluster vars */
@@ -404,12 +408,22 @@ void generateNonoverlapConstraints(CMajEnvVPSC * e,
            opt->gap.y / 2.0;
     }
     if (genclusters) {
+#ifdef WIN32
+       Constraint ***cscl = N_GNEW(opt->clusters->nclusters + 1, Constraint**);
+       int* cm = N_GNEW(opt->clusters->nclusters + 1, int);
+#else
        Constraint **cscl[opt->clusters->nclusters + 1];
        int cm[opt->clusters->nclusters + 1];
+#endif
        for (i = 0; i < opt->clusters->nclusters; i++) {
            int cn = opt->clusters->clustersizes[i];
+#ifdef WIN32
+           Variable** cvs = N_GNEW(cn + 2, Variable*);
+           boxf* cbb = N_GNEW(cn + 2, boxf);
+#else
            Variable *cvs[cn + 2];
            boxf cbb[cn + 2];
+#endif
            /* compute cluster bounding bb */
            boxf container;
            container.LL.x = container.LL.y = DBL_MAX;
@@ -437,12 +451,21 @@ void generateNonoverlapConstraints(CMajEnvVPSC * e,
                cm[i] = genYConstraints(cn + 2, cbb, cvs, &cscl[i]);
            }
            mol += cm[i];
+#ifdef WIN32
+           free (cvs);
+           free (cbb);
+#endif
        }
        /* generate top level constraints */
        {
            int cn = opt->clusters->ntoplevel + opt->clusters->nclusters;
+#ifdef WIN32
+           Variable** cvs = N_GNEW(cn,Variable*);
+           boxf* cbb = N_GNEW(cn, boxf);
+#else
            Variable *cvs[cn];
            boxf cbb[cn];
+#endif
            for (i = 0; i < opt->clusters->ntoplevel; i++) {
                int iv = opt->clusters->toplevel[i];
                cvs[i] = e->vs[iv];
@@ -504,6 +527,10 @@ void generateNonoverlapConstraints(CMajEnvVPSC * e,
                deleteVariable(cvs[i]);
            }
            mol += cm[opt->clusters->nclusters];
+#ifdef WIN32
+           free (cvs);
+           free (cbb);
+#endif
        }
        csolptr = csol = newConstraints(mol);
        for (i = 0; i < opt->clusters->nclusters + 1; i++) {
@@ -513,6 +540,10 @@ void generateNonoverlapConstraints(CMajEnvVPSC * e,
            }
            deleteConstraints(0, cscl[i]);
        }
+#ifdef WIN32
+       free (cscl);
+       free (cm);
+#endif
     } else {
        if (k == 0) {
            mol = genXConstraints(n, bb, e->vs, &csol, transitiveClosure);
@@ -566,6 +597,9 @@ void generateNonoverlapConstraints(CMajEnvVPSC * e,
                           e->m);
     }
 #endif
+#ifdef WIN32
+    free (bb);
+#endif
 }
 
 /*