--- freem/src/merr.c 2025/04/30 17:19:16 1.6 +++ freem/src/merr.c 2025/05/14 12:22:04 1.10 @@ -1,5 +1,5 @@ /* - * $Id: merr.c,v 1.6 2025/04/30 17:19:16 snw Exp $ + * $Id: merr.c,v 1.10 2025/05/14 12:22:04 snw Exp $ * stuff for handling program bogosity * * @@ -24,6 +24,18 @@ * along with FreeM. If not, see . * * $Log: merr.c,v $ + * Revision 1.10 2025/05/14 12:22:04 snw + * Further work on shared memory + * + * Revision 1.9 2025/05/03 04:21:01 snw + * Another fix for user-defined errors + * + * Revision 1.8 2025/05/03 04:12:34 snw + * Fix user-defined error codes + * + * Revision 1.7 2025/05/01 03:56:29 snw + * -m + * * Revision 1.6 2025/04/30 17:19:16 snw * Improve backtraces in debugger * @@ -229,24 +241,23 @@ inline int merr_raise(int num) if (num != OK) { merr_set_ecode_ierr (); - stcpy (merr_stack[nstx].MCODE, code); stcpy (merr_stack[nstx].ECODE, ecode); if (direct_mode == 1 && nstx == 0) { stcpy (merr_stack[nstx].PLACE, "@\201\0"); stcpy (merr_stack[nstx].MCODE, " \201\0"); } - else { + else { getraddress (placebuf, nstx); stcpy (merr_stack[nstx].PLACE, &(placebuf[3])); - /* stcpy (lref, merr_stack[nstx].PLACE); stcnv_m2c (lref); - - if (m_text (lref, merr_stack[nstx].MCODE) == NULL) { + if (routine_get_line (lref, merr_stack[nstx].MCODE) == NULL) { sprintf (merr_stack[nstx].MCODE, "???\201"); } - */ + else { + stcnv_c2m (merr_stack[nstx].MCODE); + } } if (nstx > merr_topstk) merr_topstk = nstx; @@ -335,7 +346,7 @@ void merr_set_ecode_ierr (void) snprintf (t, MERR_COD_LENGTH - 1, ",%s,\201", cod); merr_set_ecode (t); - job_set_ecode (pid, cod); + /* job_set_ecode (pid, cod); */ done: @@ -422,15 +433,20 @@ void merr_dump (int num, char *rtn, char snprintf (tbuf, STRLEN - 1, "^$JOB\202%d\202USER_ERRORS\202%s\201", pid, &user_ecode[1]); tbuf [stlen (tbuf) - 1] = '\201'; - global (get_sym, tbuf, dbuf); + ssvn (get_sym, tbuf, dbuf); if (merr () == OK) { stcpy (nem, dbuf); stcnv_m2c (nem); } else { + sprintf (nem, "user-defined error"); merr_clear (); } + + if (strlen (nem) == 0) { + sprintf (nem, "user-defined error"); + } } else {