diff --git a/Announce.txt b/Announce.txt index d8a0c3582e9983d0e85b0f7c45d7f5ec3b31f5e6..3ed8bcd71202f76053679ee31dadabe4be34d57f 100644 --- a/Announce.txt +++ b/Announce.txt @@ -1,5 +1,5 @@ - Qhull 2009.1 2009/06/11 + Qhull 2009.1.1 2010/01/09 http://www.qhull.org http://savannah.nongnu.org/projects/qhull/ diff --git a/src/Changes.txt b/src/Changes.txt index c71571ab3b9db29970430bcfad3512f1780d23c8..a823a33d5e6e29568d7975952ddafbc4616eb862 100644 --- a/src/Changes.txt +++ b/src/Changes.txt @@ -1,6 +1,11 @@ .............This file lists all changes to qhull and rbox..................... +qhull 2009.1.1 2010/01/09 + +Patch release with poly.c-qh_gethash.patch from gitorious.org/qhull +qh_gethash allowed a negative result, causing overwrite or segfault + qhull 2009.1 2009/06/11 This is a maintenance release done by Rafael Laboissiere <rafael@debian.org>. diff --git a/src/global.c b/src/global.c index ae3ea2e75db386a8809ce458846b3fd06cee767b..5265db1541c0382907d2e6a78217bf27598b88cd 100644 --- a/src/global.c +++ b/src/global.c @@ -34,15 +34,15 @@ qhT qh_qh; /* all global variables. the revision increases on code changes only notes: - change date: Changes.txt, Announce.txt, README.txt, - qhull.man, qhull.txt, qhull-news.html, Eudora signatures, + change date: Changes.txt, Announce.txt, README.txt, + qhull.man, qhull.txt, qhull-news.html, Eudora signatures, change version: README.txt, qh-get.htm, File_id.diz, Makefile.txt change year: Copying.txt check download size recompile user_eg.c, rbox.c, qhull.c, qconvex.c, qdelaun.c qvoronoi.c, qhalf.c */ -char *qh_version = "2009.1 2009/06/11"; +char *qh_version = "2009.1.1 2010/01/09"; /*-<a href="qh-globa.htm#TOC" >-------------------------------</a><a name="appendprint">-</a> @@ -62,10 +62,10 @@ void qh_appendprint (qh_PRINT format) { } } } /* appendprint */ - + /*-<a href="qh-globa.htm#TOC" >-------------------------------</a><a name="checkflags">-</a> - + qh_checkflags( commandStr, hiddenFlags ) errors if commandStr contains hiddenFlags hiddenFlags starts and ends with a space and is space deliminated (checked) @@ -73,7 +73,7 @@ void qh_appendprint (qh_PRINT format) { notes: ignores first word (e.g., "qconvex i") use qh_strtol/strtod since strtol/strtod may or may not skip trailing spaces - + see: qh_initflags() initializes Qhull according to commandStr */ @@ -87,7 +87,7 @@ void qh_checkflags(char *command, char *hiddenflags) { fprintf(qh ferr, "qhull error (qh_checkflags): hiddenflags must start and end with a space: \"%s\"", hiddenflags); qh_errexit(qh_ERRinput, NULL, NULL); } - if (strpbrk(hiddenflags, ",\n\r\t")) { + if (strpbrk(hiddenflags, ",\n\r\t")) { fprintf(qh ferr, "qhull error (qh_checkflags): hiddenflags contains commas, newlines, or tabs: \"%s\"", hiddenflags); qh_errexit(qh_ERRinput, NULL, NULL); } @@ -131,7 +131,7 @@ void qh_checkflags(char *command, char *hiddenflags) { if (strstr(hiddenflags, chkopt2)) chkerr= chkopt2; } - }else if (key == 'Q' && isdigit(opt) && prevopt != 'b' + }else if (key == 'Q' && isdigit(opt) && prevopt != 'b' && (prevopt == ' ' || islower(prevopt))) { chkopt[2]= opt; if (strstr(hiddenflags, chkopt)) @@ -152,10 +152,10 @@ void qh_checkflags(char *command, char *hiddenflags) { } } } /* checkflags */ - + /*-<a href="qh-globa.htm#TOC" >-------------------------------</a><a name="clock">-</a> - + qh_clock() return user CPU time in 100ths (qh_SECtick) only defined for qh_CLOCKtype == 2 @@ -1064,18 +1064,18 @@ void qh_initflags(char *command) { if (!isdigit(*s)) { qh_option ("Q1-no-angle-sort", NULL, NULL); qh ANGLEmerge= False; - break; + break; } switch(*s++) { case '0': qh_option ("Q10-no-narrow", NULL, NULL); qh NOnarrow= True; - break; + break; case '1': qh_option ("Q11-trinormals Qtriangulate", NULL, NULL); qh TRInormals= True; qh TRIangulate= True; - break; + break; default: s--; fprintf (qh ferr, "qhull warning: unknown 'Q' qhull option 1%c, rest ignored\n", (int)s[0]); @@ -1446,7 +1446,7 @@ void qh_initqhull_globals (coordT *points, int numpoints, int dim, boolT ismallo qh MERGEexact= True; qh_option ("Qxact_merge", NULL, NULL); } - }else if (qh MERGEexact) + }else if (qh MERGEexact) qh MERGING= True; if (!qh NOpremerge && qh JOGGLEmax > REALmax/2) { #ifdef qh_NOmerge @@ -1500,7 +1500,7 @@ void qh_initqhull_globals (coordT *points, int numpoints, int dim, boolT ismallo if (qh SCALElast && !qh DELAUNAY && qh PRINTprecision) fprintf (qh ferr, "qhull input warning: option 'Qbb' (scale-last-coordinate) is normally used with 'd' or 'v'\n"); qh DOcheckmax= (!qh SKIPcheckmax && qh MERGING ); - qh KEEPnearinside= (qh DOcheckmax && !(qh KEEPinside && qh KEEPcoplanar) + qh KEEPnearinside= (qh DOcheckmax && !(qh KEEPinside && qh KEEPcoplanar) && !qh NOnearinside); if (qh MERGING) qh CENTERtype= qh_AScentrum; @@ -1626,12 +1626,12 @@ qhull configuration warning (qh_RANDOMmax in user.h):\n\ }else if (qh PRINTout[i] == qh_PRINTvertices) { if (qh VORONOI) qh_option ("Fvoronoi", NULL, NULL); - else + else qh_option ("Fvertices", NULL, NULL); } } if (printcoplanar && qh DELAUNAY && qh JOGGLEmax < REALmax/2) { - if (qh PRINTprecision) + if (qh PRINTprecision) fprintf (qh ferr, "qhull input warning: 'QJ' (joggle) will usually prevent coincident input sites for options 'Fc' and 'FP'\n"); } if (!qh KEEPcoplanar && !qh KEEPinside && !qh ONLYgood) { @@ -1679,7 +1679,7 @@ available for 4-d output (ignored). Could use 'GDn' instead.\n"); qh PRINTdim= qh hull_dim-1; } } /* initqhull_globals */ - + /*-<a href="qh-globa.htm#TOC" >-------------------------------</a><a name="initqhull_mem">-</a>