glutDewstroyWindow cleanup

My situation is that I have a subwindow in mainwindow which creates another subwindow in mainwindow. The second subwindow provides a template for inputting data. Upon completion of data entry, I destroy both windows.

  else if(btn == GLUT_LEFT_BUTTON && state == GLUT_DOWN){
    for(i= NSubWindows-1; i >= 0; i--){
      if(subWindow[i]){
	glutDestroyWindow(subWindow[i]);
	if(i < windowlevel) windowlevel = i;
	subWindow[i] = 0;
      }
    }

The first invocation works flawlessly: subWindow[0] = 4; subWindow[1] = 5.
The next invocation creates subWindow[0] = 6 and subWindow[1] = 7. The text is correctly written into the window, but the glBegin(GL_QUADS) stuff (7 text boxes) is missing. Also, the location of the subwindow is other than as speccified.
I read somewhere that it is preferable to hide subwindows rather than create and destroy at need. That may ultimately be the answer.

Is this a known problem? Shoudl I be looking for some other problem?