Uh-oh. The problem was not fixed after all. I turned on a debug switch to see what was happening, saw the empty strings (in J6), then threw them out and tested in J8, and it worked.

But it only worked with the debugging statements in. These statements type out info about the graphics being drawn. When I took out the typeout, it crashes again.

By dumping results out to a log file, I determined that jqt crashes when my code calls glfont with an empty for an operand. I have fixed the code to stop doing that, and it works now with no debug statements.

jqt should be fixed to ignore the empty font too. The operand I was giving was an empty string.



So why did the debug typeout mask the problem? The text was drawn from a line like

  font_info drawtext"2 text_info

where font_info has rank 2 and text_info has rank 3 (to use the same font_info twice).

The drawtext verb looked like:

drawtext =: 4 : 0"1
if. DEBUG do.
  debug typeout
end.
glfont etc.
)

The failure happened when font_info and text_info were empty. In this case, drawtext was executed on a cell of fills. This crashed J8 on the glfont line, because the cell of fills contained empty strings for font and size.

But with debugging turned on, the debug typeout, which expected valid font info, failed. However, since it was executing in a cell of fills, it failed quietly: the execution of drawtext was aborted (before it could get to the deadly glfont), and the rest of the code ran as usual.



dissect is now fixed on the server.

Henry Rich
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm

Reply via email to