Trouble with List and FindObjectsWithTag

I’m having a problem trying to fill a list with GameObjects while using FindGameObjectsWithTag. I put this in a coroutine because the script exists before the level finishes loading, but even when the level is fully loaded, the script cycles indefinitely (until you stop running the game, or if you try to look at the script on the gameObject in the scene, at which point it will throw a null reference error). The spawn points definitely exist in the scene and are definitely tagged correctly, so I’m guessing its a dumb syntax mistake on my part, but I’m just not finding it.

Any ideas are appreciated.

	IEnumerator CollectSpawnPoints () //coroutine because this script will exist before the spawnpoints are loaded,
	{
		while (spawnPointList == null)
		{
			Debug.Log ("attempting to find spawn points");

			try
			{
				spawnPointList.AddRange (GameObject.FindGameObjectsWithTag("Respawn"));//.OrderBy(go => go.name).ToList());
				//spawnPointArray = GameObject.FindGameObjectsWithTag("Respawn").OrderBy(go => go.name).ToArray();
			}

			catch
			{
				Debug.Log ("CollectSpawnPoints failed to find spawnpoints, trying again");
			}

			yield return null;
		}

		currentSpawnPoint = 0;
		ResetToSpawn ();

		Debug.Log ("the CollectSpawnPoints() coroutine has finished");
	}

You probably want the check in the while loop to check if there are no elements in the list, and you also want to initialize the list first:

// make a new list
spawnPointList = new List<GameObject>();

// as long as the list is empty
while(spawnPointList.Count == 0) {
}