The following is the script that I tested.
require'gl2'
L0=: 50 NB. initial length
A0=: 1r8p1 NB. initial angle: pi divided by 8
dL=: 0.9 NB. shrink factor for length
dA=: 0.75 NB. shrink factor for angle
N=: 14 NB. number of branches
L=: L0*dL^1+i.N NB. lengths of line segments
NB. relative angles of successive line segments
A=: A0*(dA^i.N) +/\@:*("1) _1 ^ #:i.2 ^ N
NB. end points for each line segment
P=: 0 0+/\@,"2 +.*.inv (L0,0),"2 L,"0"1 A
NB. P_C_paint=: gllines_jgl2_ bind (10 <.@+ ,/"2 P-"1<./,/P)
P_C_paint1=: gllines_jgl2_@<.@(10 + ,/"2 P-"1<./,/P)
NB. P_C_paint=: gllines_jgl2_@:<.@(10 + ,/"2 P-"1<./,/P)
wd 0 : 0
pc P closeok;
setp wh 250 300;
cc C isigraph;
set C sizepolicy expanding;
pas 0 0;
pshow;
)
> On 26 Jan 2022, at 1:37 PM, bill lam <[email protected]> wrote:
>
> It can check and catch domain error when executing outside of the paint event.
>
> But it crashed if P_C_paint is run inside the paint event.
>
>> On 26 Jan 2022, at 1:16 PM, Henry Rich <[email protected]> wrote:
>>
>> On my system gllines is
>>
>> chkgl2@:('"C:/j903/bin/jqt.dll" gllines >+ i *i i' cd (; #))"1
>>
>> for which passing an atom to an argument of type *i would be a domain error.
>>
>> Henry Rich
>>
>>
>> On 1/26/2022 12:07 AM, bill lam wrote:
>>> The issue is that
>>> gllines_jgl2_ 01
>>> SHOULD raise a domain because incorrect number of parameters. The dll call
>>> never executed and shouldn't crash.
>>>
>>> On Wed, 26 Jan 2022 at 1:04 PM Henry Rich <[email protected]> wrote:
>>>
>>>> gllines_jgl2_@<. 1 2 3.3
>>>>
>>>> will execute as
>>>>
>>>> gllines_jgl2_ 01
>>>> gllines_jgl2_ 2
>>>> gllines_jgl2_ 3
>>>>
>>>> which is an error.
>>>>
>>>> gllines_jgl2_@:<. 1 2 3.3
>>>>
>>>> will execute as
>>>>
>>>> gllines_jgl2_ 1 2 3
>>>>
>>>> which is what was intended.
>>>>
>>>> Henry Rich
>>>>
>>>>
>>>>
>>>> On 1/26/2022 12:00 AM, bill lam wrote:
>>>>> gllines should already checked it received 2 parameters other 15!:0 would
>>>>> raise a domain error fir incorrect number of parameters.
>>>>> see the prototype of gllines in previous email.
>>>>>
>>>>> On Wed, 26 Jan 2022 at 12:57 PM Henry Rich <[email protected]> wrote:
>>>>>
>>>>>> gllines was being given one atom at a time, and it couldn't draw any
>>>> lines.
>>>>>> Henry Rich
>>>>>>
>>>>>> On 1/25/2022 11:55 PM, bill lam wrote:
>>>>>>> Replace @ with @: worked.
>>>>>>>
>>>>>>> Any theory why it crashed with @ ?
>>>>>>>
>>>>>>>> On 26 Jan 2022, at 12:19 PM, Henry Rich <[email protected]> wrote:
>>>>>>>>
>>>>>>>> P_C_paint=: gllines_jgl2_@<.@(10 + ,/"2 P-"1<./,/P)
>>>>>>>>
>>>>>>>> seems wrong: I suggest
>>>>>>>>
>>>>>>>> P_C_paint=: gllines_jgl2_@:<.@(10 + ,/"2 P-"1<./,/P)
>>>>>>>>
>>>>>>>> Henry Rich
>>>>>>>>
>>>>>>>>
>>>>>>>> On 1/25/2022 9:50 PM, bill lam wrote:
>>>>>>>>> prototype of gllines is
>>>>>>>>> gllines=: chkgl2 @: (('"',libjqt,'" gllines >',(IFWIN#'+'),' i *i i')
>>>>>> cd (;#)) "1
>>>>>>>>> so that it expected integer array but a floating point data type was
>>>>>> fed. JE should either signal a data type error or automatically do the
>>>>>> converting, but that is another issue/bug.
>>>>>>>>> I changed the line to
>>>>>>>>> P_C_paint=: gllines_jgl2_ bind (10 <.@+ ,/"2 P-"1<./,/P)
>>>>>>>>> then it work ok.
>>>>>>>>>
>>>>>>>>> However, your line still crashed.
>>>>>>>>> P_C_paint=: gllines_jgl2_@<.@(10 + ,/"2 P-"1<./,/P)
>>>>>>>>>
>>>>>>>>> I suspected it couldn't coerce data to integer but I have no idea
>>>>>> what's wrong.
>>>>>>>>>
>>>>>>>>>> On 20 Jan 2022, at 11:15 PM, Raul Miller <[email protected]>
>>>>>> wrote:
>>>>>>>>>> http://www.rosettacode.org/wiki/Fractal_tree#J
>>>>>>>>>>
>>>>>>>>>> The J implementation of the rosettacode fractal tree task now
>>>> crashes
>>>>>>>>>> (OSX Mojave 10.14.6)
>>>>>>>>>>
>>>>>>>>>> JVERSION
>>>>>>>>>> Engine: j903/j64/darwin
>>>>>>>>>> Release-a: commercial/2021-12-16T15:16:37
>>>>>>>>>> Library: 9.03.08
>>>>>>>>>> Qt IDE: 1.9.5/5.15.2(5.15.2)
>>>>>>>>>> Platform: Darwin 64
>>>>>>>>>> Installer: J903 install
>>>>>>>>>> InstallPath: /users/rauldmiller/applications/j903
>>>>>>>>>> Contact: www.jsoftware.com
>>>>>>>>>>
>>>>>>>>>> The xywh wd command and the rightmove and bottommove parameters are
>>>> no
>>>>>>>>>> longer valid. Simply removing them from the wd command list is
>>>>>>>>>> sufficient to cause the crash.
>>>>>>>>>>
>>>>>>>>>> Alternatively, an updated wd command list also causes the crash:
>>>>>>>>>>
>>>>>>>>>> pc P closeok;
>>>>>>>>>> setp wh 250 300;
>>>>>>>>>> cc C isigraph;
>>>>>>>>>> set C sizepolicy expanding;
>>>>>>>>>> pas 0 0;
>>>>>>>>>> pshow;
>>>>>>>>>>
>>>>>>>>>> The crash happens in the paint event handler (the qt window comes up
>>>>>>>>>> fine with P_C_paint=: ]).
>>>>>>>>>>
>>>>>>>>>> Simplifying the represented data with N=:2 still produces the crash
>>>>>>>>>>
>>>>>>>>>> P_C_paint=: gllines_jgl2_@<.@(10 + ,/"2 P-"1<./,/P)
>>>>>>>>>>
>>>>>>>>>> still produces the crash.
>>>>>>>>>>
>>>>>>>>>> A stack backtrace looks like this:
>>>>>>>>>>
>>>>>>>>>> 0 CoreFoundation 0x00007fff4f8dfa7d
>>>>>>>>>> __exceptionPreprocess + 256
>>>>>>>>>> 1 libobjc.A.dylib 0x00007fff7a10ea17
>>>>>>>>>> objc_exception_throw + 48
>>>>>>>>>> 2 CoreFoundation 0x00007fff4f8df8af
>>>>>>>>>> +[NSException raise:format:] + 201
>>>>>>>>>> 3 AppKit 0x00007fff4d6fc411
>>>>>> _NSRunModal + 156
>>>>>>>>>> 4 AppKit 0x00007fff4d2e5bb8
>>>>>>>>>> -[NSApplication runModalSession:] + 241
>>>>>>>>>> 5 libqcocoa.dylib 0x0000000114623ed6
>>>>>>>>>>
>>>> _ZN21QCocoaEventDispatcher13processEventsE6QFlagsIN10QEventLoop17ProcessEventsFlagEE
>>>>>>>>>> + 614
>>>>>>>>>> 6 QtCore 0x000000010fd6facf
>>>>>>>>>> _ZN10QEventLoop4execE6QFlagsINS_17ProcessEventsFlagEE + 431
>>>>>>>>>> 7 QtWidgets 0x0000000111ddae9e
>>>>>>>>>> _ZN7QDialog4execEv + 526
>>>>>>>>>> 8 QtWidgets 0x0000000111e18a72
>>>>>>>>>>
>>>> _ZL17showNewMessageBoxP7QWidgetN11QMessageBox4IconERK7QStringS5_6QFlagsINS1_14StandardButtonEES7_
>>>>>>>>>> + 354
>>>>>>>>>> 9 libjqt.dylib 0x000000011150247a
>>>>>>>>>>
>>>> _Z2mbNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEES5_
>>>>>>>>>> + 12026
>>>>>>>>>> 10 libjqt.dylib 0x0000000111544c35 _ZL3wd1v
>>>> +
>>>>>> 10821
>>>>>>>>>> 11 libjqt.dylib 0x000000011154219b wd + 91
>>>>>>>>>> 12 libj.dylib 0x00000001166452b8 stdcalli
>>>> +
>>>>>> 280
>>>>>>>>>> 13 libj.dylib 0x0000000116636f85 jtcdexec1
>>>>>> + 4965
>>>>>>>>>> 14 libj.dylib 0x0000000116634ddc jtcd +
>>>> 1164
>>>>>>>>>> On a tangentially related note, the links to doc.qt.io embedded in
>>>>>>>>>>
>>>> https://code.jsoftware.com/wiki/Guides/Window_Driver/ChildClasses#Styles_and_set_commands_common_to_all_controls
>>>>>>>>>> are now invalid.
>>>>>>>>>>
>>>>>>>>>> FYI,
>>>>>>>>>>
>>>>>>>>>> --
>>>>>>>>>> Raul
>>>>>>>>>>
>>>> ----------------------------------------------------------------------
>>>>>>>>>> For information about J forums see
>>>>>> http://www.jsoftware.com/forums.htm
>>>> ----------------------------------------------------------------------
>>>>>>>>> For information about J forums see
>>>> http://www.jsoftware.com/forums.htm
>>>>>>>> --
>>>>>>>> This email has been checked for viruses by AVG.
>>>>>>>> https://www.avg.com
>>>>>>>>
>>>>>>>> ----------------------------------------------------------------------
>>>>>>>> For information about J forums see
>>>> http://www.jsoftware.com/forums.htm
>>>>>>> ----------------------------------------------------------------------
>>>>>>> For information about J forums see http://www.jsoftware.com/forums.htm
>>>>>> ----------------------------------------------------------------------
>>>>>> For information about J forums see http://www.jsoftware.com/forums.htm
>>>>>>
>>>>> ----------------------------------------------------------------------
>>>>> For information about J forums see http://www.jsoftware.com/forums.htm
>>>>
>>>> --
>>>> This email has been checked for viruses by AVG.
>>>> https://www.avg.com
>>>>
>>>> ----------------------------------------------------------------------
>>>> For information about J forums see http://www.jsoftware.com/forums.htm
>>>>
>>> ----------------------------------------------------------------------
>>> For information about J forums see http://www.jsoftware.com/forums.htm
>>
>>
>> --
>> This email has been checked for viruses by AVG.
>> https://www.avg.com
>>
>> ----------------------------------------------------------------------
>> For information about J forums see http://www.jsoftware.com/forums.htm
>
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm