There are several Assign* functions in the Scene class that share the same bug. I'll use AssignTexture to illustrate.
The code begins by checking to see if the textureID is greater than the size of the vector; if so, it reports an error and returns false. But it's possible to be passed an ID of 0, which fails at the end, where 'textureID - 1' is used as an index. The way I fixed this for myself was to add a test for 0 at the beginning. This allows the program to continue running as intended. Thus, I have:
if ((textureID == 0) || (textureID > m_textures.size()))