Home Overview FAQ Documentation Download Mailing List Geomview For Windows? Support Users Development Bug Reporting Contributing Contact Us Sponsors
|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Closed REQ 5397]: hardy mystery
> > Date: Mon, 15 May 95 23:04:58 -0500 > From: bradb > Message-Id: <9505160404.AA03612 at hardy.geom.umn.edu> > To: software > Subject: hardy mystery > > > Hi, > > I'm releasing a new version of Qhull and ran into some very > strange behavior from hardy. This happened whether I was > compiling with gcc or with cc and fat binaries. > > > This code==> > > void qh_printpoint(FILE *fp, char *string, double *point) { > int k,id; > double *p; > > if (!point) > return; > fprintf (stdout, "point %x %2.2g %2.2g %2.2g\n", (int) point, point[0], point[1], point[2]); > p= point; > fprintf (stdout, "point %2.2g %x %2.2g %x %2.2g %x %2.2g %x\n", *p, (int)p, > *p++, (int)p, *p++, (int)p, *p++, (int) p); > > for(k= 3; k--; ) { > fprintf(stdout, " %2.2g", *point++); > } > fprintf(fp, "\n"); > } /* printpoint */ > > ==== produces this result ==> > > point 75470 0 0 -0.5 > point 0 75470 0 75478 0 75480 -0.5 75488 > 0 -0.5 0 > > ============== > > the first two lines are right, the third is offset by one. This > happens for every triple of doubles. If I change the loop to > read: > > for(k= 3; k--; ) { > p= point; > fprintf(stdout, " %x %2.2g", (int) p, *point++); > } > > it works fine. The code works fine on godel and gauss. I'm stuck. > Any ideas? > > --Brad > > P.S.: This is from ~bradb/qhull/Install/qhull_hardy/io.c > I was compiling with gcc . > > > Hello Brad, You might be having problems with pointer corruption... I tried creating a simple program based on your function and it worked just fine. Here it is, try compiling it yourself: #include <stdio.h> void qh_printpoint(FILE *, char *, double *); void qh_printpoint(FILE *fp, char *string, double *point) { int k,id; double *p; if (!point) return; fprintf (stdout, "point %x %2.2g %2.2g %2.2g\n", (int) point, point[0], point\ [ 1], point[2]); p= point; fprintf (stdout, "point %2.2g %x %2.2g %x %2.2g %x %2.2g %x\n", *p, (int)p, *p++, (int)p, *p++, (int)p, *p++, (int) p); for(k= 3; k--; ) { fprintf(stdout, " %2.2g", *point++); } /* fprintf(fp, "\n");*/ } /* printpoint */ int main(int argc, char **argv) { double x[8]; x[0]=0.0;x[1]=0.0;x[2]= -0.5; qh_printpoint((FILE *)NULL, (char *)NULL, x); }
|
||
Home | Overview | FAQ | Documentation | Support | Download | Mailing List Windows? | Development | Bug Reporting | Contributing | Contact Us | Sponsors |
|||
site hosted by |