Help with arrays and seg faults

I have a function to calculate the normals of vertices in my terrain. I already have the normals for each triangle so I am just adding all the adjacent triangles normals to get a normal for the vertice. I'm getting seg faults, I think from going out of the bounds of my vector. Here is the function

Code:

`void Map::calcVertexNorms()`

{

/*It works if this get() is uncommented */

//std::cin.get();

float l;

pos normal;

int pitch = numTrisW*2;

/*Adds each of the 6 adjacent triangles' normals*/

for (int i=0; i < pitch*numTrisH; i+=2)

{

normal.x += mapTris[i].norm.x;

normal.y += mapTris[i].norm.y;

normal.z += mapTris[i].norm.z;

normal.x += mapTris[i+1].norm.x;

normal.y += mapTris[i+1].norm.y;

normal.z += mapTris[i+1].norm.z;

if (i - pitch > 0)

{

normal.x += mapTris[i-pitch].norm.x;

normal.y += mapTris[i-pitch].norm.y;

normal.z += mapTris[i-pitch].norm.z;

}

if (i - pitch > 0 && i % pitch != 509)

{

normal.x += mapTris[i-pitch-1].norm.x;

normal.y += mapTris[i-pitch-1].norm.y;

normal.z += mapTris[i-pitch-1].norm.z;

normal.x += mapTris[i-pitch-2].norm.x;

normal.y += mapTris[i-pitch-2].norm.y;

normal.z += mapTris[i-pitch-2].norm.z;

}

if (i % pitch != 509)

{

normal.x += mapTris[i-1].norm.x;

normal.y += mapTris[i-1].norm.y;

normal.z += mapTris[i-1].norm.z;

}

l = sqrtf((normal.x * normal.x) + (normal.y * normal.y) + (normal.z * normal.z));

normal.x /= l;

normal.y /= l;

normal.z /= l;

/*Set the new normal to the proper verts*/

mapTris[i].verts[0].norm = normal;

mapTris[i+1].verts[0].norm = normal;

if (i - pitch > 0)

{

mapTris[i-pitch].verts[2].norm = normal;

}

if (i - pitch > 0 && i % pitch != 509)

{

mapTris[i-pitch-1].verts[2].norm = normal;

mapTris[i-pitch-2].verts[1].norm = normal;

}

if (i % pitch != 509)

{

mapTris[i-1].verts[1].norm = normal;

}

}

}

Are there any blatant mistakes, or might it be something obscure?

Thanks