I've been having the strangest bug in my program. Maybe I'm overlooking something obvious but here's what I'm doing. I have a polygon class which dynamically allocates memory for an array of points:

I call the Resize function once before I set the X and Y coordinates. Later I use a line drawing function to draw the polygon, by simply looping through all the points:Code:typedef struct _PCOORD { float x,y; } PCOORD, *PTRPCOORD; //..in polygon class PCOORD* vertex; //...and here is how I allocate space for the array void _POLYGON2D::Resize(int size) { delete vertex; vertex = new PCOORD[size]; vertices = size; }

the X() and Y() functions are defined like this:Code:for (int i=0;i<poly.Size();i++) Draw_Line(poly.X(i),poly.Y(i),poly.X(i+1),poly.Y(i+1),0,(UINT*)ddsd.lpSurface,int(ddsd.lPitch>>2));

This way I can use that loop and when it goes above the number of vertices it will draw back to the first one...Now this seems to work fine until I get to another function I'm working on. I'm trying to make it a filled polygon, and although my algorithm may not work, it should not even touch the members of my class:Code:float _POLYGON2D::X(int index) { if (vertices==0) return 0; if (index<0) return vertex[vertices-1].x; else if (index<vertices) return (vertex[index].x+center.x); else if (index>=vertices) return (vertex[0].x+center.x); } float _POLYGON2D::Y(int index) { if (vertices==0) return 0; if (index<0) return vertex[vertices].y; else if (vertices==0) return 0; else if (index<vertices) return (vertex[index].y+center.y); else if (index>=vertices) return (vertex[0].y+center.y); }

Note there is a bunch of code in the middle which is commented out, but I have narrowed it down to those two linesCode:inline int Fill_Poly(Polygon2D poly,UINT* vb_start, int lpitch32) { float* SX,*SY; SX=new float[poly.Size()]; SY=new float[poly.Size()]; for (int i=0;i<poly.Size();i++) { SX[i]=poly.X(i); SY[i]=poly.Y(i); } delete SX; delete SY; }

Somehow, when those two lines are in there, the vertices change about every second and sort of randomly move down and right...I have no idea how calling those functions could change the values in the PCOORD array