Revision: 76903
          http://sourceforge.net/p/brlcad/code/76903
Author:   brlcad
Date:     2020-08-23 16:12:28 +0000 (Sun, 23 Aug 2020)
Log Message:
-----------
make sure we're not dereferencing null

Modified Paths:
--------------
    brlcad/trunk/src/libtclcad/tclcad_obj.c
    brlcad/trunk/src/libtclcad/view/util.c

Modified: brlcad/trunk/src/libtclcad/tclcad_obj.c
===================================================================
--- brlcad/trunk/src/libtclcad/tclcad_obj.c     2020-08-23 16:10:28 UTC (rev 
76902)
+++ brlcad/trunk/src/libtclcad/tclcad_obj.c     2020-08-23 16:12:28 UTC (rev 
76903)
@@ -547,6 +547,7 @@
     ged_func_ptr to_func;
 };
 
+
 static struct to_cmdtab ged_cmds[] = {
     {"3ptarb", (char *)0, TO_UNLIMITED, to_more_args_func, ged_3ptarb},
     {"adc",    "args", 7, to_view_func, ged_adc},
@@ -820,7 +821,6 @@
 };
 
 
-
 static struct to_cmdtab to_cmds[] = {
     {"autoview",       "vname", TO_UNLIMITED, to_autoview, GED_FUNC_PTR_NULL},
     {"base2local",     (char *)0, TO_UNLIMITED, to_base2local, 
GED_FUNC_PTR_NULL},
@@ -954,6 +954,7 @@
     {(char *)0,        (char *)0, 0, TO_WRAPPER_FUNC_PTR_NULL, 
GED_FUNC_PTR_NULL}
 };
 
+
 /**
  * @brief create the Tcl command for to_open
  *
@@ -1083,6 +1084,7 @@
     }
 }
 
+
 /**
  * @brief
  * Called by Tcl when the object is destroyed.
@@ -1106,7 +1108,8 @@
            // There is a top level command created in the Tcl interp that is 
the name
            // of the dm.  Clear that command.
            const char *dm_tcl_cmd = bu_vls_cstr(dm_get_pathname((struct dm 
*)gdvp->dmp));
-           Tcl_DeleteCommand(top->to_interp, dm_tcl_cmd);
+           if (dm_tcl_cmd)
+               Tcl_DeleteCommand(top->to_interp, dm_tcl_cmd);
 
            // Close the dm.  This is not done by libged because libged only 
manages the
            // data bview knows about.  From bview's perspective, dmp is just a 
pointer
@@ -1191,6 +1194,7 @@
     }
 }
 
+
 void
 tclcad_delete_io_handler(struct ged_subprocess *p, bu_process_io_t d)
 {
@@ -1202,6 +1206,7 @@
     }
 }
 
+
 #else
 void
 tclcad_create_io_handler(struct ged_subprocess *p, bu_process_io_t d, 
ged_io_func_t callback, void *data)
@@ -1216,6 +1221,7 @@
     }
 }
 
+
 void
 tclcad_delete_io_handler(struct ged_subprocess *p, bu_process_io_t d)
 {
@@ -2887,257 +2893,259 @@
     struct bu_vls bindings = BU_VLS_INIT_ZERO;
 
     if (dm_get_pathname((struct dm *)gdvp->dmp)) {
-       bu_vls_printf(&bindings, "bind %s <Configure> {%s configure %s; break}; 
",
-                     bu_vls_addr(dm_get_pathname((struct dm *)gdvp->dmp)),
-                     bu_vls_addr(&current_top->to_gedp->go_name),
-                     bu_vls_addr(&gdvp->gv_name));
-       bu_vls_printf(&bindings, "bind %s <Enter> {focus %s; break}; ",
-                     bu_vls_addr(dm_get_pathname((struct dm *)gdvp->dmp)),
-                     bu_vls_addr(dm_get_pathname((struct dm *)gdvp->dmp)));
-       bu_vls_printf(&bindings, "bind %s <Expose> {%s handle_expose %s %%c; 
break}; ",
-                     bu_vls_addr(dm_get_pathname((struct dm *)gdvp->dmp)),
-                     bu_vls_addr(&current_top->to_gedp->go_name),
-                     bu_vls_addr(&gdvp->gv_name));
-       bu_vls_printf(&bindings, "catch {wm protocol %s WM_DELETE_WINDOW {%s 
delete_view %s; break}}; ",
-                     bu_vls_addr(dm_get_pathname((struct dm *)gdvp->dmp)),
-                     bu_vls_addr(&current_top->to_gedp->go_name),
-                     bu_vls_addr(&gdvp->gv_name));
+       struct bu_vls *pathvls = dm_get_pathname((struct dm *)gdvp->dmp);
+       if (pathvls) {
+           bu_vls_printf(&bindings, "bind %s <Configure> {%s configure %s; 
break}; ",
+                         bu_vls_addr(pathvls),
+                         bu_vls_addr(&current_top->to_gedp->go_name),
+                         bu_vls_addr(&gdvp->gv_name));
+           bu_vls_printf(&bindings, "bind %s <Enter> {focus %s; break}; ",
+                         bu_vls_addr(pathvls),
+                         bu_vls_addr(pathvls));
+           bu_vls_printf(&bindings, "bind %s <Expose> {%s handle_expose %s 
%%c; break}; ",
+                         bu_vls_addr(pathvls),
+                         bu_vls_addr(&current_top->to_gedp->go_name),
+                         bu_vls_addr(&gdvp->gv_name));
+           bu_vls_printf(&bindings, "catch {wm protocol %s WM_DELETE_WINDOW 
{%s delete_view %s; break}}; ",
+                         bu_vls_addr(pathvls),
+                         bu_vls_addr(&current_top->to_gedp->go_name),
+                         bu_vls_addr(&gdvp->gv_name));
 
-       /* Mouse Bindings */
-       bu_vls_printf(&bindings, "bind %s <2> {%s vslew %s %%x %%y; focus %s; 
break}; ",
-                     bu_vls_addr(dm_get_pathname((struct dm *)gdvp->dmp)),
-                     bu_vls_addr(&current_top->to_gedp->go_name),
-                     bu_vls_addr(&gdvp->gv_name),
-                     bu_vls_addr(dm_get_pathname((struct dm *)gdvp->dmp)));
-       bu_vls_printf(&bindings, "bind %s <1> {%s zoom %s 0.5; focus %s; 
break}; ",
-                     bu_vls_addr(dm_get_pathname((struct dm *)gdvp->dmp)),
-                     bu_vls_addr(&current_top->to_gedp->go_name),
-                     bu_vls_addr(&gdvp->gv_name),
-                     bu_vls_addr(dm_get_pathname((struct dm *)gdvp->dmp)));
-       bu_vls_printf(&bindings, "bind %s <3> {%s zoom %s 2.0; focus %s;  
break}; ",
-                     bu_vls_addr(dm_get_pathname((struct dm *)gdvp->dmp)),
-                     bu_vls_addr(&current_top->to_gedp->go_name),
-                     bu_vls_addr(&gdvp->gv_name),
-                     bu_vls_addr(dm_get_pathname((struct dm *)gdvp->dmp)));
-       bu_vls_printf(&bindings, "bind %s <4> {%s zoom %s 1.1; break}; ",
-                     bu_vls_addr(dm_get_pathname((struct dm *)gdvp->dmp)),
-                     bu_vls_addr(&current_top->to_gedp->go_name),
-                     bu_vls_addr(&gdvp->gv_name));
-       bu_vls_printf(&bindings, "bind %s <5> {%s zoom %s 0.9; break}; ",
-                     bu_vls_addr(dm_get_pathname((struct dm *)gdvp->dmp)),
-                     bu_vls_addr(&current_top->to_gedp->go_name),
-                     bu_vls_addr(&gdvp->gv_name));
-       bu_vls_printf(&bindings, "bind %s <MouseWheel> {if {%%D < 0} {%s zoom 
%s 0.9} else {%s zoom %s 1.1}; break}; ",
-                     bu_vls_addr(dm_get_pathname((struct dm *)gdvp->dmp)),
-                     bu_vls_addr(&current_top->to_gedp->go_name),
-                     bu_vls_addr(&gdvp->gv_name),
-                     bu_vls_addr(&current_top->to_gedp->go_name),
-                     bu_vls_addr(&gdvp->gv_name));
+           /* Mouse Bindings */
+           bu_vls_printf(&bindings, "bind %s <2> {%s vslew %s %%x %%y; focus 
%s; break}; ",
+                         bu_vls_addr(pathvls),
+                         bu_vls_addr(&current_top->to_gedp->go_name),
+                         bu_vls_addr(&gdvp->gv_name),
+                         bu_vls_addr(pathvls));
+           bu_vls_printf(&bindings, "bind %s <1> {%s zoom %s 0.5; focus %s; 
break}; ",
+                         bu_vls_addr(pathvls),
+                         bu_vls_addr(&current_top->to_gedp->go_name),
+                         bu_vls_addr(&gdvp->gv_name),
+                         bu_vls_addr(pathvls));
+           bu_vls_printf(&bindings, "bind %s <3> {%s zoom %s 2.0; focus %s;  
break}; ",
+                         bu_vls_addr(pathvls),
+                         bu_vls_addr(&current_top->to_gedp->go_name),
+                         bu_vls_addr(&gdvp->gv_name),
+                         bu_vls_addr(pathvls));
+           bu_vls_printf(&bindings, "bind %s <4> {%s zoom %s 1.1; break}; ",
+                         bu_vls_addr(pathvls),
+                         bu_vls_addr(&current_top->to_gedp->go_name),
+                         bu_vls_addr(&gdvp->gv_name));
+           bu_vls_printf(&bindings, "bind %s <5> {%s zoom %s 0.9; break}; ",
+                         bu_vls_addr(pathvls),
+                         bu_vls_addr(&current_top->to_gedp->go_name),
+                         bu_vls_addr(&gdvp->gv_name));
+           bu_vls_printf(&bindings, "bind %s <MouseWheel> {if {%%D < 0} {%s 
zoom %s 0.9} else {%s zoom %s 1.1}; break}; ",
+                         bu_vls_addr(pathvls),
+                         bu_vls_addr(&current_top->to_gedp->go_name),
+                         bu_vls_addr(&gdvp->gv_name),
+                         bu_vls_addr(&current_top->to_gedp->go_name),
+                         bu_vls_addr(&gdvp->gv_name));
 
-       /* Idle Mode */
-       bu_vls_printf(&bindings, "bind %s <ButtonRelease> {%s idle_mode %s}; ",
-                     bu_vls_addr(dm_get_pathname((struct dm *)gdvp->dmp)),
-                     bu_vls_addr(&current_top->to_gedp->go_name),
-                     bu_vls_addr(&gdvp->gv_name));
-       bu_vls_printf(&bindings, "bind %s <KeyRelease-Control_L> {%s idle_mode 
%s}; ",
-                     bu_vls_addr(dm_get_pathname((struct dm *)gdvp->dmp)),
-                     bu_vls_addr(&current_top->to_gedp->go_name),
-                     bu_vls_addr(&gdvp->gv_name));
-       bu_vls_printf(&bindings, "bind %s <KeyRelease-Control_R> {%s idle_mode 
%s}; ",
-                     bu_vls_addr(dm_get_pathname((struct dm *)gdvp->dmp)),
-                     bu_vls_addr(&current_top->to_gedp->go_name),
-                     bu_vls_addr(&gdvp->gv_name));
-       bu_vls_printf(&bindings, "bind %s <KeyRelease-Shift_L> {%s idle_mode 
%s}; ",
-                     bu_vls_addr(dm_get_pathname((struct dm *)gdvp->dmp)),
-                     bu_vls_addr(&current_top->to_gedp->go_name),
-                     bu_vls_addr(&gdvp->gv_name));
-       bu_vls_printf(&bindings, "bind %s <KeyRelease-Shift_R> {%s idle_mode 
%s}; ",
-                     bu_vls_addr(dm_get_pathname((struct dm *)gdvp->dmp)),
-                     bu_vls_addr(&current_top->to_gedp->go_name),
-                     bu_vls_addr(&gdvp->gv_name));
-       bu_vls_printf(&bindings, "bind %s <KeyRelease-Alt_L> {%s idle_mode %s; 
break}; ",
-                     bu_vls_addr(dm_get_pathname((struct dm *)gdvp->dmp)),
-                     bu_vls_addr(&current_top->to_gedp->go_name),
-                     bu_vls_addr(&gdvp->gv_name));
-       bu_vls_printf(&bindings, "bind %s <KeyRelease-Alt_R> {%s idle_mode %s; 
break}; ",
-                     bu_vls_addr(dm_get_pathname((struct dm *)gdvp->dmp)),
-                     bu_vls_addr(&current_top->to_gedp->go_name),
-                     bu_vls_addr(&gdvp->gv_name));
+           /* Idle Mode */
+           bu_vls_printf(&bindings, "bind %s <ButtonRelease> {%s idle_mode 
%s}; ",
+                         bu_vls_addr(pathvls),
+                         bu_vls_addr(&current_top->to_gedp->go_name),
+                         bu_vls_addr(&gdvp->gv_name));
+           bu_vls_printf(&bindings, "bind %s <KeyRelease-Control_L> {%s 
idle_mode %s}; ",
+                         bu_vls_addr(pathvls),
+                         bu_vls_addr(&current_top->to_gedp->go_name),
+                         bu_vls_addr(&gdvp->gv_name));
+           bu_vls_printf(&bindings, "bind %s <KeyRelease-Control_R> {%s 
idle_mode %s}; ",
+                         bu_vls_addr(pathvls),
+                         bu_vls_addr(&current_top->to_gedp->go_name),
+                         bu_vls_addr(&gdvp->gv_name));
+           bu_vls_printf(&bindings, "bind %s <KeyRelease-Shift_L> {%s 
idle_mode %s}; ",
+                         bu_vls_addr(pathvls),
+                         bu_vls_addr(&current_top->to_gedp->go_name),
+                         bu_vls_addr(&gdvp->gv_name));
+           bu_vls_printf(&bindings, "bind %s <KeyRelease-Shift_R> {%s 
idle_mode %s}; ",
+                         bu_vls_addr(pathvls),
+                         bu_vls_addr(&current_top->to_gedp->go_name),
+                         bu_vls_addr(&gdvp->gv_name));
+           bu_vls_printf(&bindings, "bind %s <KeyRelease-Alt_L> {%s idle_mode 
%s; break}; ",
+                         bu_vls_addr(pathvls),
+                         bu_vls_addr(&current_top->to_gedp->go_name),
+                         bu_vls_addr(&gdvp->gv_name));
+           bu_vls_printf(&bindings, "bind %s <KeyRelease-Alt_R> {%s idle_mode 
%s; break}; ",
+                         bu_vls_addr(pathvls),
+                         bu_vls_addr(&current_top->to_gedp->go_name),
+                         bu_vls_addr(&gdvp->gv_name));
 
-       /* Rotate Mode */
-       bu_vls_printf(&bindings, "bind %s <Control-ButtonRelease-1> {%s 
idle_mode %s}; ",
-                     bu_vls_addr(dm_get_pathname((struct dm *)gdvp->dmp)),
-                     bu_vls_addr(&current_top->to_gedp->go_name),
-                     bu_vls_addr(&gdvp->gv_name));
-       bu_vls_printf(&bindings, "bind %s <Control-ButtonPress-1> {%s 
rotate_mode %s %%x %%y}; ",
-                     bu_vls_addr(dm_get_pathname((struct dm *)gdvp->dmp)),
-                     bu_vls_addr(&current_top->to_gedp->go_name),
-                     bu_vls_addr(&gdvp->gv_name));
-       bu_vls_printf(&bindings, "bind %s <Control-ButtonPress-2> {%s 
rotate_mode %s %%x %%y}; ",
-                     bu_vls_addr(dm_get_pathname((struct dm *)gdvp->dmp)),
-                     bu_vls_addr(&current_top->to_gedp->go_name),
-                     bu_vls_addr(&gdvp->gv_name));
-       bu_vls_printf(&bindings, "bind %s <Control-ButtonPress-3> {%s 
rotate_mode %s %%x %%y}; ",
-                     bu_vls_addr(dm_get_pathname((struct dm *)gdvp->dmp)),
-                     bu_vls_addr(&current_top->to_gedp->go_name),
-                     bu_vls_addr(&gdvp->gv_name));
+           /* Rotate Mode */
+           bu_vls_printf(&bindings, "bind %s <Control-ButtonRelease-1> {%s 
idle_mode %s}; ",
+                         bu_vls_addr(pathvls),
+                         bu_vls_addr(&current_top->to_gedp->go_name),
+                         bu_vls_addr(&gdvp->gv_name));
+           bu_vls_printf(&bindings, "bind %s <Control-ButtonPress-1> {%s 
rotate_mode %s %%x %%y}; ",
+                         bu_vls_addr(pathvls),
+                         bu_vls_addr(&current_top->to_gedp->go_name),
+                         bu_vls_addr(&gdvp->gv_name));
+           bu_vls_printf(&bindings, "bind %s <Control-ButtonPress-2> {%s 
rotate_mode %s %%x %%y}; ",
+                         bu_vls_addr(pathvls),
+                         bu_vls_addr(&current_top->to_gedp->go_name),
+                         bu_vls_addr(&gdvp->gv_name));
+           bu_vls_printf(&bindings, "bind %s <Control-ButtonPress-3> {%s 
rotate_mode %s %%x %%y}; ",
+                         bu_vls_addr(pathvls),
+                         bu_vls_addr(&current_top->to_gedp->go_name),
+                         bu_vls_addr(&gdvp->gv_name));
 
-       /* Translate Mode */
-       bu_vls_printf(&bindings, "bind %s <Shift-ButtonRelease-1> {%s idle_mode 
%s}; ",
-                     bu_vls_addr(dm_get_pathname((struct dm *)gdvp->dmp)),
-                     bu_vls_addr(&current_top->to_gedp->go_name),
-                     bu_vls_addr(&gdvp->gv_name));
-       bu_vls_printf(&bindings, "bind %s <Shift-ButtonPress-1> {%s 
translate_mode %s %%x %%y}; ",
-                     bu_vls_addr(dm_get_pathname((struct dm *)gdvp->dmp)),
-                     bu_vls_addr(&current_top->to_gedp->go_name),
-                     bu_vls_addr(&gdvp->gv_name));
-       bu_vls_printf(&bindings, "bind %s <Shift-ButtonPress-2> {%s 
translate_mode %s %%x %%y}; ",
-                     bu_vls_addr(dm_get_pathname((struct dm *)gdvp->dmp)),
-                     bu_vls_addr(&current_top->to_gedp->go_name),
-                     bu_vls_addr(&gdvp->gv_name));
-       bu_vls_printf(&bindings, "bind %s <Shift-ButtonPress-3> {%s 
translate_mode %s %%x %%y}; ",
-                     bu_vls_addr(dm_get_pathname((struct dm *)gdvp->dmp)),
-                     bu_vls_addr(&current_top->to_gedp->go_name),
-                     bu_vls_addr(&gdvp->gv_name));
+           /* Translate Mode */
+           bu_vls_printf(&bindings, "bind %s <Shift-ButtonRelease-1> {%s 
idle_mode %s}; ",
+                         bu_vls_addr(pathvls),
+                         bu_vls_addr(&current_top->to_gedp->go_name),
+                         bu_vls_addr(&gdvp->gv_name));
+           bu_vls_printf(&bindings, "bind %s <Shift-ButtonPress-1> {%s 
translate_mode %s %%x %%y}; ",
+                         bu_vls_addr(pathvls),
+                         bu_vls_addr(&current_top->to_gedp->go_name),
+                         bu_vls_addr(&gdvp->gv_name));
+           bu_vls_printf(&bindings, "bind %s <Shift-ButtonPress-2> {%s 
translate_mode %s %%x %%y}; ",
+                         bu_vls_addr(pathvls),
+                         bu_vls_addr(&current_top->to_gedp->go_name),
+                         bu_vls_addr(&gdvp->gv_name));
+           bu_vls_printf(&bindings, "bind %s <Shift-ButtonPress-3> {%s 
translate_mode %s %%x %%y}; ",
+                         bu_vls_addr(pathvls),
+                         bu_vls_addr(&current_top->to_gedp->go_name),
+                         bu_vls_addr(&gdvp->gv_name));
 
-       /* Scale Mode */
-       bu_vls_printf(&bindings, "bind %s <Control-Shift-ButtonRelease-1> {%s 
idle_mode %s}; ",
-                     bu_vls_addr(dm_get_pathname((struct dm *)gdvp->dmp)),
-                     bu_vls_addr(&current_top->to_gedp->go_name),
-                     bu_vls_addr(&gdvp->gv_name));
-       bu_vls_printf(&bindings, "bind %s <Control-Shift-ButtonPress-1> {%s 
scale_mode %s %%x %%y}; ",
-                     bu_vls_addr(dm_get_pathname((struct dm *)gdvp->dmp)),
-                     bu_vls_addr(&current_top->to_gedp->go_name),
-                     bu_vls_addr(&gdvp->gv_name));
-       bu_vls_printf(&bindings, "bind %s <Control-Shift-ButtonPress-2> {%s 
scale_mode %s %%x %%y}; ",
-                     bu_vls_addr(dm_get_pathname((struct dm *)gdvp->dmp)),
-                     bu_vls_addr(&current_top->to_gedp->go_name),
-                     bu_vls_addr(&gdvp->gv_name));
-       bu_vls_printf(&bindings, "bind %s <Control-Shift-ButtonPress-3> {%s 
scale_mode %s %%x %%y}; ",
-                     bu_vls_addr(dm_get_pathname((struct dm *)gdvp->dmp)),
-                     bu_vls_addr(&current_top->to_gedp->go_name),
-                     bu_vls_addr(&gdvp->gv_name));
+           /* Scale Mode */
+           bu_vls_printf(&bindings, "bind %s <Control-Shift-ButtonRelease-1> 
{%s idle_mode %s}; ",
+                         bu_vls_addr(pathvls),
+                         bu_vls_addr(&current_top->to_gedp->go_name),
+                         bu_vls_addr(&gdvp->gv_name));
+           bu_vls_printf(&bindings, "bind %s <Control-Shift-ButtonPress-1> {%s 
scale_mode %s %%x %%y}; ",
+                         bu_vls_addr(pathvls),
+                         bu_vls_addr(&current_top->to_gedp->go_name),
+                         bu_vls_addr(&gdvp->gv_name));
+           bu_vls_printf(&bindings, "bind %s <Control-Shift-ButtonPress-2> {%s 
scale_mode %s %%x %%y}; ",
+                         bu_vls_addr(pathvls),
+                         bu_vls_addr(&current_top->to_gedp->go_name),
+                         bu_vls_addr(&gdvp->gv_name));
+           bu_vls_printf(&bindings, "bind %s <Control-Shift-ButtonPress-3> {%s 
scale_mode %s %%x %%y}; ",
+                         bu_vls_addr(pathvls),
+                         bu_vls_addr(&current_top->to_gedp->go_name),
+                         bu_vls_addr(&gdvp->gv_name));
 
-       /* Constrained Rotate Mode */
-       bu_vls_printf(&bindings, "bind %s <Control-Lock-ButtonRelease-1> {%s 
idle_mode %s}; ",
-                     bu_vls_addr(dm_get_pathname((struct dm *)gdvp->dmp)),
-                     bu_vls_addr(&current_top->to_gedp->go_name),
-                     bu_vls_addr(&gdvp->gv_name));
-       bu_vls_printf(&bindings, "bind %s <Control-Lock-ButtonPress-1> {%s 
constrain_rmode %s x %%x %%y; break}; ",
-                     bu_vls_addr(dm_get_pathname((struct dm *)gdvp->dmp)),
-                     bu_vls_addr(&current_top->to_gedp->go_name),
-                     bu_vls_addr(&gdvp->gv_name));
-       bu_vls_printf(&bindings, "bind %s <Control-Lock-ButtonPress-2> {%s 
constrain_rmode %s y %%x %%y; break}; ",
-                     bu_vls_addr(dm_get_pathname((struct dm *)gdvp->dmp)),
-                     bu_vls_addr(&current_top->to_gedp->go_name),
-                     bu_vls_addr(&gdvp->gv_name));
-       bu_vls_printf(&bindings, "bind %s <Control-Lock-ButtonPress-3> {%s 
constrain_rmode %s z %%x %%y; break}; ",
-                     bu_vls_addr(dm_get_pathname((struct dm *)gdvp->dmp)),
-                     bu_vls_addr(&current_top->to_gedp->go_name),
-                     bu_vls_addr(&gdvp->gv_name));
+           /* Constrained Rotate Mode */
+           bu_vls_printf(&bindings, "bind %s <Control-Lock-ButtonRelease-1> 
{%s idle_mode %s}; ",
+                         bu_vls_addr(pathvls),
+                         bu_vls_addr(&current_top->to_gedp->go_name),
+                         bu_vls_addr(&gdvp->gv_name));
+           bu_vls_printf(&bindings, "bind %s <Control-Lock-ButtonPress-1> {%s 
constrain_rmode %s x %%x %%y; break}; ",
+                         bu_vls_addr(pathvls),
+                         bu_vls_addr(&current_top->to_gedp->go_name),
+                         bu_vls_addr(&gdvp->gv_name));
+           bu_vls_printf(&bindings, "bind %s <Control-Lock-ButtonPress-2> {%s 
constrain_rmode %s y %%x %%y; break}; ",
+                         bu_vls_addr(pathvls),
+                         bu_vls_addr(&current_top->to_gedp->go_name),
+                         bu_vls_addr(&gdvp->gv_name));
+           bu_vls_printf(&bindings, "bind %s <Control-Lock-ButtonPress-3> {%s 
constrain_rmode %s z %%x %%y; break}; ",
+                         bu_vls_addr(pathvls),
+                         bu_vls_addr(&current_top->to_gedp->go_name),
+                         bu_vls_addr(&gdvp->gv_name));
 
-       /* Constrained Translate Mode */
-       bu_vls_printf(&bindings, "bind %s <Shift-Lock-ButtonRelease-1> {%s 
idle_mode %s; break}; ",
-                     bu_vls_addr(dm_get_pathname((struct dm *)gdvp->dmp)),
-                     bu_vls_addr(&current_top->to_gedp->go_name),
-                     bu_vls_addr(&gdvp->gv_name));
-       bu_vls_printf(&bindings, "bind %s <Shift-Lock-ButtonPress-1> {%s 
constrain_tmode %s x %%x %%y; break}; ",
-                     bu_vls_addr(dm_get_pathname((struct dm *)gdvp->dmp)),
-                     bu_vls_addr(&current_top->to_gedp->go_name),
-                     bu_vls_addr(&gdvp->gv_name));
-       bu_vls_printf(&bindings, "bind %s <Shift-Lock-ButtonPress-2> {%s 
constrain_tmode %s y %%x %%y; break}; ",
-                     bu_vls_addr(dm_get_pathname((struct dm *)gdvp->dmp)),
-                     bu_vls_addr(&current_top->to_gedp->go_name),
-                     bu_vls_addr(&gdvp->gv_name));
-       bu_vls_printf(&bindings, "bind %s <Shift-Lock-ButtonPress-3> {%s 
constrain_tmode %s z %%x %%y; break}; ",
-                     bu_vls_addr(dm_get_pathname((struct dm *)gdvp->dmp)),
-                     bu_vls_addr(&current_top->to_gedp->go_name),
-                     bu_vls_addr(&gdvp->gv_name));
+           /* Constrained Translate Mode */
+           bu_vls_printf(&bindings, "bind %s <Shift-Lock-ButtonRelease-1> {%s 
idle_mode %s; break}; ",
+                         bu_vls_addr(pathvls),
+                         bu_vls_addr(&current_top->to_gedp->go_name),
+                         bu_vls_addr(&gdvp->gv_name));
+           bu_vls_printf(&bindings, "bind %s <Shift-Lock-ButtonPress-1> {%s 
constrain_tmode %s x %%x %%y; break}; ",
+                         bu_vls_addr(pathvls),
+                         bu_vls_addr(&current_top->to_gedp->go_name),
+                         bu_vls_addr(&gdvp->gv_name));
+           bu_vls_printf(&bindings, "bind %s <Shift-Lock-ButtonPress-2> {%s 
constrain_tmode %s y %%x %%y; break}; ",
+                         bu_vls_addr(pathvls),
+                         bu_vls_addr(&current_top->to_gedp->go_name),
+                         bu_vls_addr(&gdvp->gv_name));
+           bu_vls_printf(&bindings, "bind %s <Shift-Lock-ButtonPress-3> {%s 
constrain_tmode %s z %%x %%y; break}; ",
+                         bu_vls_addr(pathvls),
+                         bu_vls_addr(&current_top->to_gedp->go_name),
+                         bu_vls_addr(&gdvp->gv_name));
 
-       /* Key Bindings */
-       bu_vls_printf(&bindings, "bind %s 3 {%s aet %s 35 25; break}; ",
-                     bu_vls_addr(dm_get_pathname((struct dm *)gdvp->dmp)),
-                     bu_vls_addr(&current_top->to_gedp->go_name),
-                     bu_vls_addr(&gdvp->gv_name));
-       bu_vls_printf(&bindings, "bind %s 4 {%s aet %s 45 45; break}; ",
-                     bu_vls_addr(dm_get_pathname((struct dm *)gdvp->dmp)),
-                     bu_vls_addr(&current_top->to_gedp->go_name),
-                     bu_vls_addr(&gdvp->gv_name));
-       bu_vls_printf(&bindings, "bind %s f {%s aet %s 0 0; break}; ",
-                     bu_vls_addr(dm_get_pathname((struct dm *)gdvp->dmp)),
-                     bu_vls_addr(&current_top->to_gedp->go_name),
-                     bu_vls_addr(&gdvp->gv_name));
-       bu_vls_printf(&bindings, "bind %s F {%s aet %s 0 0; break}; ",
-                     bu_vls_addr(dm_get_pathname((struct dm *)gdvp->dmp)),
-                     bu_vls_addr(&current_top->to_gedp->go_name),
-                     bu_vls_addr(&gdvp->gv_name));
-       bu_vls_printf(&bindings, "bind %s R {%s aet %s 180 0; break}; ",
-                     bu_vls_addr(dm_get_pathname((struct dm *)gdvp->dmp)),
-                     bu_vls_addr(&current_top->to_gedp->go_name),
-                     bu_vls_addr(&gdvp->gv_name));
-       bu_vls_printf(&bindings, "bind %s r {%s aet %s 270 0; break}; ",
-                     bu_vls_addr(dm_get_pathname((struct dm *)gdvp->dmp)),
-                     bu_vls_addr(&current_top->to_gedp->go_name),
-                     bu_vls_addr(&gdvp->gv_name));
-       bu_vls_printf(&bindings, "bind %s l {%s aet %s 90 0; break}; ",
-                     bu_vls_addr(dm_get_pathname((struct dm *)gdvp->dmp)),
-                     bu_vls_addr(&current_top->to_gedp->go_name),
-                     bu_vls_addr(&gdvp->gv_name));
-       bu_vls_printf(&bindings, "bind %s L {%s aet %s 90 0; break}; ",
-                     bu_vls_addr(dm_get_pathname((struct dm *)gdvp->dmp)),
-                     bu_vls_addr(&current_top->to_gedp->go_name),
-                     bu_vls_addr(&gdvp->gv_name));
-       bu_vls_printf(&bindings, "bind %s t {%s aet %s 270 90; break}; ",
-                     bu_vls_addr(dm_get_pathname((struct dm *)gdvp->dmp)),
-                     bu_vls_addr(&current_top->to_gedp->go_name),
-                     bu_vls_addr(&gdvp->gv_name));
-       bu_vls_printf(&bindings, "bind %s T {%s aet %s 270 90; break}; ",
-                     bu_vls_addr(dm_get_pathname((struct dm *)gdvp->dmp)),
-                     bu_vls_addr(&current_top->to_gedp->go_name),
-                     bu_vls_addr(&gdvp->gv_name));
-       bu_vls_printf(&bindings, "bind %s b {%s aet %s 270 -90; break}; ",
-                     bu_vls_addr(dm_get_pathname((struct dm *)gdvp->dmp)),
-                     bu_vls_addr(&current_top->to_gedp->go_name),
-                     bu_vls_addr(&gdvp->gv_name));
-       bu_vls_printf(&bindings, "bind %s B {%s aet %s 270 -90; break}; ",
-                     bu_vls_addr(dm_get_pathname((struct dm *)gdvp->dmp)),
-                     bu_vls_addr(&current_top->to_gedp->go_name),
-                     bu_vls_addr(&gdvp->gv_name));
-       bu_vls_printf(&bindings, "bind %s + {%s zoom %s 2.0; break}; ",
-                     bu_vls_addr(dm_get_pathname((struct dm *)gdvp->dmp)),
-                     bu_vls_addr(&current_top->to_gedp->go_name),
-                     bu_vls_addr(&gdvp->gv_name));
-       bu_vls_printf(&bindings, "bind %s = {%s zoom %s 2.0; break}; ",
-                     bu_vls_addr(dm_get_pathname((struct dm *)gdvp->dmp)),
-                     bu_vls_addr(&current_top->to_gedp->go_name),
-                     bu_vls_addr(&gdvp->gv_name));
-       bu_vls_printf(&bindings, "bind %s _ {%s zoom %s 0.5; break}; ",
-                     bu_vls_addr(dm_get_pathname((struct dm *)gdvp->dmp)),
-                     bu_vls_addr(&current_top->to_gedp->go_name),
-                     bu_vls_addr(&gdvp->gv_name));
-       bu_vls_printf(&bindings, "bind %s - {%s zoom %s 0.5; break}; ",
-                     bu_vls_addr(dm_get_pathname((struct dm *)gdvp->dmp)),
-                     bu_vls_addr(&current_top->to_gedp->go_name),
-                     bu_vls_addr(&gdvp->gv_name));
-       bu_vls_printf(&bindings, "bind %s <Key-Left> {%s rot %s -v 0 1 0; 
break}; ",
-                     bu_vls_addr(dm_get_pathname((struct dm *)gdvp->dmp)),
-                     bu_vls_addr(&current_top->to_gedp->go_name),
-                     bu_vls_addr(&gdvp->gv_name));
-       bu_vls_printf(&bindings, "bind %s <Key-Right> {%s rot %s -v 0 -1 0; 
break}; ",
-                     bu_vls_addr(dm_get_pathname((struct dm *)gdvp->dmp)),
-                     bu_vls_addr(&current_top->to_gedp->go_name),
-                     bu_vls_addr(&gdvp->gv_name));
-       bu_vls_printf(&bindings, "bind %s <Key-Up> {%s rot %s -v 1 0 0; break}; 
",
-                     bu_vls_addr(dm_get_pathname((struct dm *)gdvp->dmp)),
-                     bu_vls_addr(&current_top->to_gedp->go_name),
-                     bu_vls_addr(&gdvp->gv_name));
-       bu_vls_printf(&bindings, "bind %s <Key-Down> {%s rot %s -v -1 0 0; 
break}; ",
-                     bu_vls_addr(dm_get_pathname((struct dm *)gdvp->dmp)),
-                     bu_vls_addr(&current_top->to_gedp->go_name),
-                     bu_vls_addr(&gdvp->gv_name));
+           /* Key Bindings */
+           bu_vls_printf(&bindings, "bind %s 3 {%s aet %s 35 25; break}; ",
+                         bu_vls_addr(pathvls),
+                         bu_vls_addr(&current_top->to_gedp->go_name),
+                         bu_vls_addr(&gdvp->gv_name));
+           bu_vls_printf(&bindings, "bind %s 4 {%s aet %s 45 45; break}; ",
+                         bu_vls_addr(pathvls),
+                         bu_vls_addr(&current_top->to_gedp->go_name),
+                         bu_vls_addr(&gdvp->gv_name));
+           bu_vls_printf(&bindings, "bind %s f {%s aet %s 0 0; break}; ",
+                         bu_vls_addr(pathvls),
+                         bu_vls_addr(&current_top->to_gedp->go_name),
+                         bu_vls_addr(&gdvp->gv_name));
+           bu_vls_printf(&bindings, "bind %s F {%s aet %s 0 0; break}; ",
+                         bu_vls_addr(pathvls),
+                         bu_vls_addr(&current_top->to_gedp->go_name),
+                         bu_vls_addr(&gdvp->gv_name));
+           bu_vls_printf(&bindings, "bind %s R {%s aet %s 180 0; break}; ",
+                         bu_vls_addr(pathvls),
+                         bu_vls_addr(&current_top->to_gedp->go_name),
+                         bu_vls_addr(&gdvp->gv_name));
+           bu_vls_printf(&bindings, "bind %s r {%s aet %s 270 0; break}; ",
+                         bu_vls_addr(pathvls),
+                         bu_vls_addr(&current_top->to_gedp->go_name),
+                         bu_vls_addr(&gdvp->gv_name));
+           bu_vls_printf(&bindings, "bind %s l {%s aet %s 90 0; break}; ",
+                         bu_vls_addr(pathvls),
+                         bu_vls_addr(&current_top->to_gedp->go_name),
+                         bu_vls_addr(&gdvp->gv_name));
+           bu_vls_printf(&bindings, "bind %s L {%s aet %s 90 0; break}; ",
+                         bu_vls_addr(pathvls),
+                         bu_vls_addr(&current_top->to_gedp->go_name),
+                         bu_vls_addr(&gdvp->gv_name));
+           bu_vls_printf(&bindings, "bind %s t {%s aet %s 270 90; break}; ",
+                         bu_vls_addr(pathvls),
+                         bu_vls_addr(&current_top->to_gedp->go_name),
+                         bu_vls_addr(&gdvp->gv_name));
+           bu_vls_printf(&bindings, "bind %s T {%s aet %s 270 90; break}; ",
+                         bu_vls_addr(pathvls),
+                         bu_vls_addr(&current_top->to_gedp->go_name),
+                         bu_vls_addr(&gdvp->gv_name));
+           bu_vls_printf(&bindings, "bind %s b {%s aet %s 270 -90; break}; ",
+                         bu_vls_addr(pathvls),
+                         bu_vls_addr(&current_top->to_gedp->go_name),
+                         bu_vls_addr(&gdvp->gv_name));
+           bu_vls_printf(&bindings, "bind %s B {%s aet %s 270 -90; break}; ",
+                         bu_vls_addr(pathvls),
+                         bu_vls_addr(&current_top->to_gedp->go_name),
+                         bu_vls_addr(&gdvp->gv_name));
+           bu_vls_printf(&bindings, "bind %s + {%s zoom %s 2.0; break}; ",
+                         bu_vls_addr(pathvls),
+                         bu_vls_addr(&current_top->to_gedp->go_name),
+                         bu_vls_addr(&gdvp->gv_name));
+           bu_vls_printf(&bindings, "bind %s = {%s zoom %s 2.0; break}; ",
+                         bu_vls_addr(pathvls),
+                         bu_vls_addr(&current_top->to_gedp->go_name),
+                         bu_vls_addr(&gdvp->gv_name));
+           bu_vls_printf(&bindings, "bind %s _ {%s zoom %s 0.5; break}; ",
+                         bu_vls_addr(pathvls),
+                         bu_vls_addr(&current_top->to_gedp->go_name),
+                         bu_vls_addr(&gdvp->gv_name));
+           bu_vls_printf(&bindings, "bind %s - {%s zoom %s 0.5; break}; ",
+                         bu_vls_addr(pathvls),
+                         bu_vls_addr(&current_top->to_gedp->go_name),
+                         bu_vls_addr(&gdvp->gv_name));
+           bu_vls_printf(&bindings, "bind %s <Key-Left> {%s rot %s -v 0 1 0; 
break}; ",
+                         bu_vls_addr(pathvls),
+                         bu_vls_addr(&current_top->to_gedp->go_name),
+                         bu_vls_addr(&gdvp->gv_name));
+           bu_vls_printf(&bindings, "bind %s <Key-Right> {%s rot %s -v 0 -1 0; 
break}; ",
+                         bu_vls_addr(pathvls),
+                         bu_vls_addr(&current_top->to_gedp->go_name),
+                         bu_vls_addr(&gdvp->gv_name));
+           bu_vls_printf(&bindings, "bind %s <Key-Up> {%s rot %s -v 1 0 0; 
break}; ",
+                         bu_vls_addr(pathvls),
+                         bu_vls_addr(&current_top->to_gedp->go_name),
+                         bu_vls_addr(&gdvp->gv_name));
+           bu_vls_printf(&bindings, "bind %s <Key-Down> {%s rot %s -v -1 0 0; 
break}; ",
+                         bu_vls_addr(pathvls),
+                         bu_vls_addr(&current_top->to_gedp->go_name),
+                         bu_vls_addr(&gdvp->gv_name));
 
-
-       Tcl_Eval(current_top->to_interp, bu_vls_addr(&bindings));
+           Tcl_Eval(current_top->to_interp, bu_vls_addr(&bindings));
+       }
     }
     bu_vls_free(&bindings);
 }
@@ -3490,7 +3498,6 @@
 };
 
 
-
 HIDDEN void
 redraw_edited_paths(struct bu_hash_tbl *t, void *udata)
 {
@@ -3763,7 +3770,6 @@
 }
 
 
-
 HIDDEN int
 to_local2base(struct ged *gedp,
              int UNUSED(argc),
@@ -3849,7 +3855,6 @@
 }
 
 
-
 HIDDEN int
 to_edit_motion_delta_callback(struct ged *gedp,
                              int argc,
@@ -5901,7 +5906,6 @@
 }
 
 
-
 HIDDEN int
 to_view_callback(struct ged *gedp,
                 int argc,
@@ -6321,6 +6325,7 @@
     return GED_OK;
 }
 
+
 /*************************** Local Utility Functions 
***************************/
 
 HIDDEN void
@@ -6389,6 +6394,7 @@
     }
 }
 
+
 HIDDEN void
 to_rt_end_callback_internal(int aborted)
 {

Modified: brlcad/trunk/src/libtclcad/view/util.c
===================================================================
--- brlcad/trunk/src/libtclcad/view/util.c      2020-08-23 16:10:28 UTC (rev 
76902)
+++ brlcad/trunk/src/libtclcad/view/util.c      2020-08-23 16:12:28 UTC (rev 
76903)
@@ -61,8 +61,11 @@
     Tcl_Obj *our_result;
     Tcl_Obj *saved_result;
     int result_int;
-    const char *pathname = bu_vls_addr(dm_get_pathname((struct dm 
*)gdvp->dmp));
+    const char *pathname;
+    const struct bu_vls *pathvls = dm_get_pathname((struct dm *)gdvp->dmp);
 
+    pathname = bu_vls_addr(pathvls);
+
     /* stash any existing result so we can inspect our own */
     saved_result = Tcl_GetObjResult(current_top->to_interp);
     Tcl_IncrRefCount(saved_result);

This was sent by the SourceForge.net collaborative development platform, the 
world's largest Open Source development site.



_______________________________________________
BRL-CAD Source Commits mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/brlcad-commits

Reply via email to