From 8e2748905a080995c36cc3e743359a1e4c609529 Mon Sep 17 00:00:00 2001 From: stefan schippers Date: Sat, 5 Apr 2025 02:07:48 +0200 Subject: [PATCH] fix eval_expr not recognizing 1234e-12 (negative exponent),fix spice.awk (dangerous removal of `value=` patterns in spice netlists) --- src/eval_expr.y | 2 +- src/select.c | 2 +- src/spice.awk | 6 ++++-- src/xschem.h | 2 +- 4 files changed, 7 insertions(+), 5 deletions(-) diff --git a/src/eval_expr.y b/src/eval_expr.y index 80eb696f..55e54a6e 100644 --- a/src/eval_expr.y +++ b/src/eval_expr.y @@ -252,7 +252,7 @@ static int kklex() int rd = 0; str--; - sscanf(str, "%99[.0-9a-zA-Z_]%n", s, &rd); + sscanf(str, "%99[.0-9a-zA-Z_-]%n", s, &rd); kklval.val = atof_eng(s); str += rd; dbg(dbglev, "lex(): NUM: %s\n", s); diff --git a/src/select.c b/src/select.c index 8aa84813..e509d952 100644 --- a/src/select.c +++ b/src/select.c @@ -1254,7 +1254,7 @@ void select_line(int c, int i, unsigned short select_mode, int fast, int overrid /* 20160503 return type field */ Selected select_object(double mx,double my, unsigned short select_mode, - int override_lock, Selected *selptr) + int override_lock, const Selected *selptr) { Selected sel; xctx->already_selected = 0; diff --git a/src/spice.awk b/src/spice.awk index 07bb05e7..415b9775 100755 --- a/src/spice.awk +++ b/src/spice.awk @@ -245,8 +245,10 @@ function process( i,j, iprefix, saveinstr, savetype, saveanalysis) sub(/ value=/," c=") IGNORECASE=0 } - gsub(/ value=/," ") - gsub(/ VALUE=/," ") + ### ?? too dangerous + # gsub(/ value=/," ") + # gsub(/ VALUE=/," ") + if($0 ~ /^D/ ) sub(/PERI[ \t]*=/,"PJ=") ## .save tran v(?1 GB ) v(?1 SB ) diff --git a/src/xschem.h b/src/xschem.h index 09f4faa9..73462014 100644 --- a/src/xschem.h +++ b/src/xschem.h @@ -1390,7 +1390,7 @@ extern int text_bbox_nocairo(const char * str,double xscale, double yscale, #endif extern Selected select_object(double mx,double my, unsigned short sel_mode, - int override_lock, Selected *selptr); + int override_lock, const Selected *selptr); extern int set_first_sel(unsigned short type, int n, unsigned int col); extern void unselect_all(int dr); extern void select_attached_nets(void);