From 28aec3fad883a5ab2b679d4a08af97162b443629 Mon Sep 17 00:00:00 2001 From: stefan schippers Date: Fri, 1 Mar 2024 00:39:24 +0100 Subject: [PATCH] fix error in set_snap(): should not do a redraw (draw() ) here, causing a segfault if x11/tk structures are not ready yet. add draw() in places where this function is called if there is something to draw/ --- src/actions.c | 1 - src/callback.c | 2 ++ src/scheduler.c | 1 + 3 files changed, 3 insertions(+), 1 deletion(-) diff --git a/src/actions.c b/src/actions.c index 51bdfae7..32851e20 100644 --- a/src/actions.c +++ b/src/actions.c @@ -300,7 +300,6 @@ void set_snap(double newsnap) /* 20161212 set new snap factor and just notify n } xctx->cadhalfdotsize = CADHALFDOTSIZE * (cs < 10. ? cs : 10.) / 10.; tclsetdoublevar("cadsnap", cs); - draw(); } void set_grid(double newgrid) diff --git a/src/callback.c b/src/callback.c index 67be0ad4..1eb8bc2b 100644 --- a/src/callback.c +++ b/src/callback.c @@ -2207,6 +2207,7 @@ int rstate; /* (reduced state, without ShiftMask) */ if(key=='g' && rstate==0) /* half snap factor */ { set_snap(c_snap / 2.0); + draw(); break; } if(key=='g' && rstate==ControlMask) /* set snap factor 20161212 */ @@ -2220,6 +2221,7 @@ int rstate; /* (reduced state, without ShiftMask) */ if(key=='G' && rstate == 0) /* double snap factor */ { set_snap(c_snap * 2.0); + draw(); break; } if(key=='*' && EQUAL_MODMASK) /* svg print , 20121108 */ diff --git a/src/scheduler.c b/src/scheduler.c index fb11ef12..29042ec0 100644 --- a/src/scheduler.c +++ b/src/scheduler.c @@ -4546,6 +4546,7 @@ int xschem(ClientData clientdata, Tcl_Interp *interp, int argc, const char * arg else if(!strcmp(argv[2], "cadsnap")) { /* set mouse snap (default: 10) */ if(!xctx) {Tcl_SetResult(interp, not_avail, TCL_STATIC); return TCL_ERROR;} set_snap( atof(argv[3]) ); + draw(); } else if(!strcmp(argv[2], "color_ps")) { /* set color psoscript (1 or 0) */ color_ps=atoi(argv[3]);