[Simh] SIMH 3.9 problem report
Mark Pizzolato - Info Comm
Mark at infocomm.com
Fri Dec 21 15:41:02 EST 2012
Hi Darrell,
As it turns out, ALL the commands which are recognized that don't have help string in the command table are all actually convenient aliases for other commands. In the case you encountered, GET is an alias for RESTORE.
I've changed the help command's response for the future versions of simh to 1) not cause an exception and 2) to indicate that the command you are seeking help for is an alias and then provide the help string for the aliased command and finally 3) if no alias help is available, then report that no help is available.
Thanks for this bug report.
The latest source code is available at: https://github.com/simh/simh/archive/master.zip
- Mark Pizzolato
From: simh-bounces at trailing-edge.com [mailto:simh-bounces at trailing-edge.com] On Behalf Of Darrell Pittman
Sent: Thursday, December 20, 2012 8:16 PM
To: simh at trailing-edge.com
Subject: [Simh] SIMH 3.9 problem report
Dear Mr. Supnik:
I stumbled across a small problem in the scp.c module for SIMH. I entered the command "help get". The help_cmd() function did a lookup for the "GET" command in cmd_table[], which it found, but the structure member help (a char pointer) for the "GET" command was a NULL pointer, which was in turn passed into fputs(), which tried to dereference the NULL pointer and caused an exception.
I took the liberty of patching help_cmd() to supply a default string if help text is unavailable in cmd_table[]. My version of help_cmd() now reads as follows:
t_stat help_cmd (int32 flag, char *cptr)
{
char gbuf[CBUFSIZE];
CTAB *cmdp;
GET_SWITCHES (cptr);
if (*cptr) {
cptr = get_glyph (cptr, gbuf, 0);
if (*cptr)
return SCPE_2MARG;
if (cmdp = find_cmd (gbuf)) {
const char* helptxt = cmdp->help ? cmdp->help : "No help available\n"; // <-- insert line
fputs (helptxt, stdout); // <-- change line
if (sim_log)
fputs (helptxt, sim_log); // <-- change line
}
else return SCPE_ARG;
}
else {
fprint_help (stdout);
if (sim_log)
fprint_help (sim_log);
}
return SCPE_OK;
}
Thank you for this wonderful SIMH system!
Best regards,
Darrell
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mailman.trailing-edge.com/pipermail/simh/attachments/20121221/bc5ed5f9/attachment-0002.html>
More information about the Simh
mailing list