<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40"><head><meta http-equiv=Content-Type content="text/html; charset=iso-8859-1"><meta name=Generator content="Microsoft Word 12 (filtered medium)"><style><!--
/* Font Definitions */
@font-face
        {font-family:Wingdings;
        panose-1:5 0 0 0 0 0 0 0 0 0;}
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
        {font-family:Tahoma;
        panose-1:2 11 6 4 3 5 4 4 2 4;}
@font-face
        {font-family:Consolas;
        panose-1:2 11 6 9 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri","sans-serif";}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:purple;
        text-decoration:underline;}
p.MsoListParagraph, li.MsoListParagraph, div.MsoListParagraph
        {mso-style-priority:34;
        margin-top:0in;
        margin-right:0in;
        margin-bottom:0in;
        margin-left:.5in;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri","sans-serif";}
span.EmailStyle17
        {mso-style-type:personal;
        font-family:"Calibri","sans-serif";
        color:windowtext;}
span.EmailStyle18
        {mso-style-type:personal-reply;
        font-family:"Calibri","sans-serif";
        color:#1F497D;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-size:10.0pt;}
@page WordSection1
        {size:8.5in 11.0in;
        margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
        {page:WordSection1;}
/* List Definitions */
@list l0
        {mso-list-id:479348007;
        mso-list-type:hybrid;
        mso-list-template-ids:-2048654142 -751405980 67698691 67698693 67698689 67698691 67698693 67698689 67698691 67698693;}
@list l0:level1
        {mso-level-start-at:5;
        mso-level-number-format:bullet;
        mso-level-text:-;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;
        font-family:"Calibri","sans-serif";
        mso-fareast-font-family:Calibri;
        mso-bidi-font-family:"Times New Roman";}
ol
        {margin-bottom:0in;}
ul
        {margin-bottom:0in;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]--></head><body lang=EN-US link=blue vlink=purple><div class=WordSection1><p class=MsoNormal><span style='color:#1F497D'>Hi Darrell,<o:p></o:p></span></p><p class=MsoNormal><span style='color:#1F497D'><o:p> </o:p></span></p><p class=MsoNormal><span style='color:#1F497D'>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.<o:p></o:p></span></p><p class=MsoNormal><span style='color:#1F497D'><o:p> </o:p></span></p><p class=MsoNormal><span style='color:#1F497D'>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.<o:p></o:p></span></p><p class=MsoNormal><span style='color:#1F497D'><o:p> </o:p></span></p><p class=MsoNormal><span style='color:#1F497D'>Thanks for this bug report.<o:p></o:p></span></p><p class=MsoNormal><span style='color:#1F497D'><o:p> </o:p></span></p><p class=MsoNormal><span style='color:#1F497D'>The latest source code is available at: <a href="https://github.com/simh/simh/archive/master.zip">https://github.com/simh/simh/archive/master.zip</a><o:p></o:p></span></p><p class=MsoNormal><span style='color:#1F497D'><o:p> </o:p></span></p><p class=MsoListParagraph style='text-indent:-.25in;mso-list:l0 level1 lfo1'><![if !supportLists]><span style='color:#1F497D'><span style='mso-list:Ignore'>-<span style='font:7.0pt "Times New Roman"'>        </span></span></span><![endif]><span style='color:#1F497D'>Mark Pizzolato <o:p></o:p></span></p><p class=MsoNormal><span style='color:#1F497D'><o:p> </o:p></span></p><div style='border:none;border-left:solid blue 1.5pt;padding:0in 0in 0in 4.0pt'><div><div style='border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0in 0in 0in'><p class=MsoNormal><b><span style='font-size:10.0pt;font-family:"Tahoma","sans-serif"'>From:</span></b><span style='font-size:10.0pt;font-family:"Tahoma","sans-serif"'> simh-bounces@trailing-edge.com [mailto:simh-bounces@trailing-edge.com] <b>On Behalf Of </b>Darrell Pittman<br><b>Sent:</b> Thursday, December 20, 2012 8:16 PM<br><b>To:</b> simh@trailing-edge.com<br><b>Subject:</b> [Simh] SIMH 3.9 problem report<o:p></o:p></span></p></div></div><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Dear Mr. Supnik:<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>I stumbled across a small problem in the scp.c module for SIMH. I entered the command “help get”. The <i>help_cmd()</i> function did a lookup for the “GET” command in <i>cmd_table[], </i>which it found, but the structure member <i>help</i> (a char pointer) for the “GET” command was a NULL pointer, which was in turn passed into <i>fputs(),</i> which tried to dereference the NULL pointer and caused an exception.<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>I took the liberty of patching <i>help_cmd()</i> to supply a default string if help text is unavailable in <i>cmd_table[].</i> My version of <i>help_cmd() </i>now reads as follows:<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal style='text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas'>t_stat help_cmd <span style='color:purple'>(</span>int32 flag<span style='color:purple'>,</span> <span style='color:blue'>char</span> <span style='color:purple'>*</span>cptr<span style='color:purple'>)</span><o:p></o:p></span></p><p class=MsoNormal style='text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;color:purple'>{</span><span style='font-size:9.5pt;font-family:Consolas'><o:p></o:p></span></p><p class=MsoNormal style='text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;color:blue'>char</span><span style='font-size:9.5pt;font-family:Consolas'> gbuf<span style='color:purple'>[</span>CBUFSIZE<span style='color:purple'>];</span><o:p></o:p></span></p><p class=MsoNormal style='text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas'>CTAB <span style='color:purple'>*</span>cmdp<span style='color:purple'>;</span><o:p></o:p></span></p><p class=MsoNormal style='text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas'><o:p> </o:p></span></p><p class=MsoNormal style='text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas'>GET_SWITCHES <span style='color:purple'>(</span>cptr<span style='color:purple'>);</span><o:p></o:p></span></p><p class=MsoNormal style='text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;color:blue'>if</span><span style='font-size:9.5pt;font-family:Consolas'> <span style='color:purple'>(*</span>cptr<span style='color:purple'>)</span> <span style='color:purple'>{</span><o:p></o:p></span></p><p class=MsoNormal style='text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas'>    cptr <span style='color:purple'>=</span> get_glyph <span style='color:purple'>(</span>cptr<span style='color:purple'>,</span> gbuf<span style='color:purple'>,</span> 0<span style='color:purple'>);</span><o:p></o:p></span></p><p class=MsoNormal style='text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas'>    <span style='color:blue'>if</span> <span style='color:purple'>(*</span>cptr<span style='color:purple'>)</span><o:p></o:p></span></p><p class=MsoNormal style='text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas'>        <span style='color:blue'>return</span> SCPE_2MARG<span style='color:purple'>;</span><o:p></o:p></span></p><p class=MsoNormal style='text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas'>    <span style='color:blue'>if</span> <span style='color:purple'>(</span>cmdp <span style='color:purple'>=</span> find_cmd <span style='color:purple'>(</span>gbuf<span style='color:purple'>))</span> <span style='color:purple'>{</span><o:p></o:p></span></p><p class=MsoNormal style='text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas'>        <span style='color:blue'>const char</span><span style='color:purple'>*</span> helptxt <span style='color:purple'>=</span> cmdp<span style='color:purple'>-></span>help <span style='color:purple'>?</span> cmdp<span style='color:purple'>-></span>help <span style='color:purple'>:</span> <span style='color:#A31515'>"No help available\n"</span><span style='color:purple'>;    // </span></span><span style='font-size:9.5pt;font-family:Wingdings;color:purple'>ß</span><span style='font-size:9.5pt;font-family:Consolas;color:purple'> insert line</span><span style='font-size:9.5pt;font-family:Consolas'><o:p></o:p></span></p><p class=MsoNormal style='text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas'>        fputs <span style='color:purple'>(</span>helptxt<span style='color:purple'>,</span> stdout<span style='color:purple'>);                                                  // </span></span><span style='font-size:9.5pt;font-family:Wingdings;color:purple'>ß</span><span style='font-size:9.5pt;font-family:Consolas;color:purple'> change line</span><span style='font-size:9.5pt;font-family:Consolas'><o:p></o:p></span></p><p class=MsoNormal style='text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas'>        <span style='color:blue'>if</span> <span style='color:purple'>(</span>sim_log<span style='color:purple'>)</span><o:p></o:p></span></p><p class=MsoNormal style='text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas'>            fputs <span style='color:purple'>(</span>helptxt<span style='color:purple'>,</span> sim_log<span style='color:purple'>);                                             // </span></span><span style='font-size:9.5pt;font-family:Wingdings;color:purple'>ß</span><span style='font-size:9.5pt;font-family:Consolas;color:purple'> change line</span><span style='font-size:9.5pt;font-family:Consolas'><o:p></o:p></span></p><p class=MsoNormal style='text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas'>        <span style='color:purple'>}</span><o:p></o:p></span></p><p class=MsoNormal style='text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas'>    <span style='color:blue'>else</span> <span style='color:blue'>return</span> SCPE_ARG<span style='color:purple'>;</span><o:p></o:p></span></p><p class=MsoNormal style='text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas'>    <span style='color:purple'>}</span><o:p></o:p></span></p><p class=MsoNormal style='text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;color:blue'>else</span><span style='font-size:9.5pt;font-family:Consolas'> <span style='color:purple'>{</span><o:p></o:p></span></p><p class=MsoNormal style='text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas'>    fprint_help <span style='color:purple'>(</span>stdout<span style='color:purple'>);</span><o:p></o:p></span></p><p class=MsoNormal style='text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas'>    <span style='color:blue'>if</span> <span style='color:purple'>(</span>sim_log<span style='color:purple'>)</span><o:p></o:p></span></p><p class=MsoNormal style='text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas'>        fprint_help <span style='color:purple'>(</span>sim_log<span style='color:purple'>);</span><o:p></o:p></span></p><p class=MsoNormal style='text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas'>    <span style='color:purple'>}</span><o:p></o:p></span></p><p class=MsoNormal style='text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;color:blue'>return</span><span style='font-size:9.5pt;font-family:Consolas'> SCPE_OK<span style='color:purple'>;</span><o:p></o:p></span></p><p class=MsoNormal style='text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;color:purple'>}<o:p></o:p></span></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Thank you for this wonderful SIMH system!<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Best regards,<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Darrell<o:p></o:p></p></div></div></body></html>