- while (*scan) {
- if (*scan == sp) {
- *scan = sp->_next_screen;
- break;
- }
- scan = &(*scan)->_next_screen;
- }
-
- (void) _nc_freewin(sp->_curscr);
- (void) _nc_freewin(sp->_newscr);
- (void) _nc_freewin(sp->_stdscr);
-
- if (sp->_slk != 0) {
- if (sp->_slk->ent != 0) {
- for (i = 0; i < sp->_slk->labcnt; ++i) {
- FreeIfNeeded(sp->_slk->ent[i].ent_text);
- FreeIfNeeded(sp->_slk->ent[i].form_text);
+ if (delink_screen(sp)) {
+
+ (void) _nc_freewin(sp->_curscr);
+ (void) _nc_freewin(sp->_newscr);
+ (void) _nc_freewin(sp->_stdscr);
+
+ if (sp->_slk != 0) {
+ if (sp->_slk->ent != 0) {
+ for (i = 0; i < sp->_slk->labcnt; ++i) {
+ FreeIfNeeded(sp->_slk->ent[i].ent_text);
+ FreeIfNeeded(sp->_slk->ent[i].form_text);
+ }
+ free(sp->_slk->ent);