]> ncurses.scripts.mit.edu Git - ncurses.git/blobdiff - panel/p_new.c
ncurses 5.1
[ncurses.git] / panel / p_new.c
index f2f208d6ec7b68cb2a9ebb9eaa302d4fbdd5b8fb..43542fea2154313e796b6b373420081eaab4c833 100644 (file)
  */
 #include "panel.priv.h"
 
-MODULE_ID("$Id: p_new.c,v 1.4 1999/09/29 15:22:32 juergen Exp $")
+MODULE_ID("$Id: p_new.c,v 1.5 1999/11/22 18:02:41 juergen Exp $")
+
+#ifdef TRACE
+static char* stdscr_id;
+static char* new_id;
+#endif
 
 /*+-------------------------------------------------------------------------
   Get root (i.e. stdscr's) panel.
@@ -57,7 +62,9 @@ root_panel(void)
        pan->below   = (PANEL*)0;
        pan->above   = (PANEL*)0;
 #ifdef TRACE
-       pan->user = "stdscr";
+       if (!stdscr_id)
+         stdscr_id = strdup("stdscr");
+       pan->user = stdscr_id;
 #else
        pan->user = (void*)0;
 #endif
@@ -72,7 +79,11 @@ new_panel(WINDOW *win)
 {
   PANEL *pan = (PANEL*)0;
 
-  (void)root_panel();
+  if (!win)
+    return(pan);
+
+  if (!_nc_stdscr_pseudo_panel)
+    (void)root_panel();
   assert(_nc_stdscr_pseudo_panel);
 
   if (!(win->_flags & _ISPAD) && (pan = (PANEL*)malloc(sizeof(PANEL))))
@@ -81,7 +92,9 @@ new_panel(WINDOW *win)
       pan->above = (PANEL *)0;
       pan->below = (PANEL *)0;
 #ifdef TRACE
-      pan->user = "new";
+      if (!new_id)
+       new_id = strdup("new");
+      pan->user = new_id;
 #else
       pan->user = (char *)0;
 #endif