Browse Source

Guard XSPICE plot switching against circuit being removed already

pre-master-46
Holger Vogt 6 years ago
parent
commit
bad2a4e467
  1. 20
      src/frontend/vectors.c
  2. 4
      src/xspice/evt/evtsetup.c

20
src/frontend/vectors.c

@ -1111,6 +1111,11 @@ void plot_setcur(const char *name)
else if (cieq(name, "previous")) { else if (cieq(name, "previous")) {
if (plot_cur->pl_next) { if (plot_cur->pl_next) {
plot_cur = plot_cur->pl_next; plot_cur = plot_cur->pl_next;
#ifdef XSPICE
if (ft_curckt) {
EVTswitch_plot(ft_curckt->ci_ckt, plot_cur->pl_typename);
}
#endif
} }
else { else {
fprintf(cp_err, fprintf(cp_err,
@ -1131,7 +1136,11 @@ void plot_setcur(const char *name)
} }
if (prev_pl) { /* found */ if (prev_pl) { /* found */
plot_cur = prev_pl; plot_cur = prev_pl;
EVTswitch_plot(ft_curckt->ci_ckt, plot_cur->pl_typename);
#ifdef XSPICE
if (ft_curckt) {
EVTswitch_plot(ft_curckt->ci_ckt, plot_cur->pl_typename);
}
#endif
} }
else { /* no next plot */ else { /* no next plot */
fprintf(cp_err, fprintf(cp_err,
@ -1156,7 +1165,14 @@ void plot_setcur(const char *name)
plot_cur->pl_ccom = cp_kwswitch(CT_VECTOR, pl->pl_ccom); plot_cur->pl_ccom = cp_kwswitch(CT_VECTOR, pl->pl_ccom);
} }
*/ */
EVTswitch_plot(ft_curckt->ci_ckt, name);
#ifdef XSPICE
/* XSPICE event data are linked to the current circuit. It must not be removed
when manipulating the data by any command.
*/
if (ft_curckt) {
EVTswitch_plot(ft_curckt->ci_ckt, name);
}
#endif
plot_cur = pl; plot_cur = pl;
} /* end of function plot_setcur */ } /* end of function plot_setcur */

4
src/xspice/evt/evtsetup.c

@ -617,7 +617,9 @@ int EVTsetup_plot(CKTcircuit* ckt, char *plotname) {
} }
/* If command 'setplot' is called, we switch to the corresponding event data. /* If command 'setplot' is called, we switch to the corresponding event data.
Their pointers have been stored in the jobs structure.*/
Their pointers have been stored in the jobs structure. The circuit must
be still available!
*/
int EVTswitch_plot(CKTcircuit* ckt, const char* plottypename) { int EVTswitch_plot(CKTcircuit* ckt, const char* plottypename) {
int i; int i;
bool found = FALSE; bool found = FALSE;

Loading…
Cancel
Save