Multi-Texturing Problema

Hi all, I have a bit of a conundrum.

I’m rendering a mesh that is two parts, and each part may have one of two different setups for multi-texturing.

//Take this example.

for(int i = 0; i < numMeshePieces; i++)
{
	//Setup MultiTexturing
	if(conditionTrue)
	{
		glActiveTextureARB(GL_TEXTURE0_ARB);
		glEnable(GL_TEXTURE_CUBE_MAP);
		glBindTexture(GL_TEXTURE_CUBE_MAP, pointer1);
		glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_COMBINE);
		glTexEnvi(GL_TEXTURE_ENV, GL_COMBINE_RGB, GL_REPLACE);
		glTexEnvi(GL_TEXTURE_ENV, GL_SOURCE0_RGB, GL_TEXTURE);

		glActiveTextureARB(GL_TEXTURE1_ARB);
		glEnable(GL_TEXTURE_2D);
		glBindTexture(GL_TEXTURE_2D, pointer2);
		glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_COMBINE);
		glTexEnvi(GL_TEXTURE_ENV, GL_COMBINE_RGB, GL_DOT3_RGB);
		glTexEnvi(GL_TEXTURE_ENV, GL_SOURCE0_RGB, GL_PREVIOUS);
		glTexEnvi(GL_TEXTURE_ENV, GL_SOURCE1_RGB, GL_TEXTURE);

		glActiveTextureARB(GL_TEXTURE2_ARB);
		glEnable(GL_TEXTURE_2D);
		glBindTexture(GL_TEXTURE_2D, pointer3);
		glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);
	}else{
		//Texture Stage 0
		glActiveTextureARB(GL_TEXTURE0_ARB);
		glEnable(GL_TEXTURE_2D);
		glBindTexture(GL_TEXTURE_2D, pointer1);
		glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_COMBINE_EXT);

		//Texture Stage 1
		glActiveTextureARB(GL_TEXTURE1_ARB);
		glEnable(GL_TEXTURE_1D);
		glBindTexture(GL_TEXTURE_1D, pointer2);
		glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_COMBINE_EXT);
	}

	for(int p = 0; p < numPolys; p++)
 	{
		//DO RENDERING
 	}
}

If I do the thing like this the first mesh piece will render correctly, but then the subsequent ones will render and not be correct. They’ll turn out like Gray. >_>

Must I disable or deactivate the texture stages or something? Any feedback would be appreciated. Thanks. ^^