OpenGL man pages
glCallList - execute a display list
void glCallList( GLuint list )
list Specifies the integer name of the display list to be executed.
glCallList causes the named display list to be executed. The commands
saved in the display list are executed in order, just as if they were
called without using a display list. If list has not been defined as a
display list, glCallList is ignored.
glCallList can appear inside a display list. To avoid the possibility of
infinite recursion resulting from display lists calling one another, a
limit is placed on the nesting level of display lists during display-list
execution. This limit is at least 64, and it depends on the
GL state is not saved and restored across a call to glCallList. Thus,
changes made to GL state during the execution of a display list remain
after execution of the display list is completed. Use glPushAttrib,
glPopAttrib, glPushMatrix, and glPopMatrix to preserve GL state across
Display lists can be executed between a call to glBegin and the
corresponding call to glEnd, as long as the display list includes only
commands that are allowed in this interval.
glGet with argument GL_MAX_LIST_NESTING
glCallLists, glDeleteLists, glGenLists, glNewList, glPushAttrib,
Fri Dec 6 11:18:03 EST 1996
Look here for legal stuff: Legal