Excessive scrolling texture overflow

Due to a bug in the source code, excessive usage of the scrolling texture effect causes a crash or level dependent problems.

Linedefs with a scrolling texture effect are added to the linespeciallist array (despite the generic name, it only contains lines with scrolling textures). This array has a static limit of 64, defined by the constant MAXLINEANIMS. The lines are collected in the array inside the function P_SpawnSpecials in p_spec.c:

//	Init line EFFECTs numlinespecials = 0; for (i = 0;i < numlines; i++) {    switch(lines[i].special) {        case 48: // EFFECT FIRSTCOL SCROLL+ linespeciallist[numlinespecials] = &lines[i]; numlinespecials++; break; } }

A check against MAXLINEANIMS is not done before adding it to the list. Since MAXLINEANIMS is only 64, after the 64th scrolling texture wall inside the map is processed for specials, memory will start to be overwritten. Depending on how much memory is overwritten, this may produce level dependent results or crashes depending on the layout of memory.

Strife introduces three new scroller types and increases the value of MAXLINEANIMS to 96, but it does not fix the oversight, so it remains subject to this bug.