diff --git a/pardef.c b/pardef.c index dee8048..d471e0d 100644 --- a/pardef.c +++ b/pardef.c @@ -1315,6 +1315,7 @@ void ParUpdateNode(hdbValue value) { } else { /* bare object (parameter "") */ node = ctx->obj->node; + ctx->par->node = node; snprintf(sicscommand, sizeof sicscommand, "%s = ", ctx->obj->name); } SetHdbProperty(node, "sicscommand", sicscommand); @@ -1331,6 +1332,7 @@ void ParUpdateNode(hdbValue value) { SetHdbProperty(node, "visible", "false"); } } + if (GetHdbProp("geterror")) skip_unchanged = 0; switch (value.dataType) { case HIPFLOAT: if (value.v.doubleValue == PAR_NAN) { @@ -1355,8 +1357,8 @@ void ParUpdateNode(hdbValue value) { if (skip_unchanged && node->value.v.intValue == value.v.intValue) return; break; case HIPTEXT: - if (strcmp(node->value.v.text, value.v.text) == 0) return; - break; + if (skip_unchanged && strcmp(node->value.v.text, value.v.text) == 0) return; + break; default: return; } @@ -1708,6 +1710,9 @@ void ParKill(void *object) p = o->infoList; while (p) { q = p->next; + if (p->node == o->node) { + p->node = NULL; /* avoid removing the object node, this is done below */ + } ParKillThisPar(p); p = q; }