[Crm114-developers] bug or undocumented feature by design? call
with return to non-existing variable
From: Ger H. <ge...@ho...> - 2008-10-05 12:04:26
|
Anyway, here's the SECOND bug as Paolo also found out: DEMO SCRIPT ----------------------- window isolate (:c:) /ABC/ call /:func:/ (:d:) output /C = :*:c:\n/ output /D = :*:d:\n/ exit /0/ :func: return /XYZ/ trap (:ex:) // output /EXCEPTION: :*:ex:\n/ ----------------------- (vanilla) INCORRECT RESULT (though 'incorrect' is rather DISPUTABLE here! Though it is undocumented behaviour AFAICT.) ----------------------- C = ABC D = XYZ ----------------------- Now note that GerH didn't change here before / after 3495 'ultra strict' -- yet DO note that second DEMO SCRIPT below where the TRAP is gone! (GerH since 3495) EXPECTED RESULT ----------------------- EXCEPTION: crm114: *WARNING* Your call statement wants to return a value to a nonexistent variable; I'll create an isolated one. Hope that's OK. Varname was ':d:' I'll try to keep working. This happened at line 5 of file tests/call_return_test3.crm: call /:func:/ (:d:) (runtime system location: crm_exec_engine.c(1045) in routine: crm_invoke) ----------------------- Now to make things truely interesting regarding what is RIGHT and WRONG for this second one: DEMO SCRIPT ----------------------- window isolate (:c:) /ABC/ call /:func:/ (:d:) output /C = :*:c:\n/ output /D = :*:d:\n/ exit /0/ :func: return /XYZ/ # NO trap handler --> different behaviour! ----------------------- (vanilla) INCORRECT RESULT (though 'incorrect' is rather DISPUTABLE here! Though it is undocumented behaviour AFAICT.) ----------------------- C = ABC D = XYZ ----------------------- (GerH since 3495) EXPECTED RESULT ----------------------- crm114: *WARNING* Your call statement wants to return a value to a nonexistent variable; I'll created an isolated one. Hope that's OK. Varname was ':d:' I'll try to keep working. This happened at line 5 of file tests/call_return_test4.crm: call /:func:/ (:d:) (runtime system location: crm_exec_engine.c(1045) in routine: crm_invoke) C = ABC D = XYZ ----------------------- and more precise: the error message went to stderr while the ----------------------- C = ABC D = XYZ ----------------------- went to stdout. (That's because this was a nonfatalerror() - which always dumps it's WARNINGs to stderr, when they were not catched by a 'trap'.) -- Met vriendelijke groeten / Best regards, Ger Hobbelt -------------------------------------------------- web: http://www.hobbelt.com/ http://www.hebbut.net/ mail: ge...@ho... mobile: +31-6-11 120 978 -------------------------------------------------- |
From: Paolo <oo...@us...> - 2008-10-06 23:05:14
|
On Sun, Oct 05, 2008 at 01:00:00PM +0200, Ger Hobbelt wrote: > Anyway, here's the SECOND bug as Paolo also found out: ... > isolate (:c:) /ABC/ > > call /:func:/ (:d:) > > output /C = :*:c:\n/ > output /D = :*:d:\n/ seems it's by design: crm_exec_engine.c:786: ... if (vht[ret_idx] == NULL) { // nonfatalerror // ("Your call statement wants to return a value " // "to a nonexistent variable; I'll created an " //"isolated one. Hope that's OK. Varname was", // outbuf); ... but the problem is deeper: $ ./crm114 '-{window; isolate (xxx) //}' uh? isn't that an illegal varname ? ... $ ./crm114 '-{window; isolate (xxx) //; output /:*:xxx:\n/}' Ztart corrupted Zend corrupted i 3470 len 3 name = -xxx- :xxx: ah, it is - only that we don't check (anymore) at due time. Did the specs change meanwhile? -- paolo |
From: Bill Y. <ws...@me...> - 2008-10-07 13:27:32
|
From: Paolo <oo...@us...> // "to a nonexistent variable; I'll created an " //"isolated one. Hope that's OK. Varname was", // outbuf); ... but the problem is deeper: $ ./crm114 '-{window; isolate (xxx) //}' uh? isn't that an illegal varname ? ... Yeah, it is. $ ./crm114 '-{window; isolate (xxx) //; output /:*:xxx:\n/}' Ztart corrupted Zend corrupted i 3470 len 3 name = -xxx- :xxx: ah, it is - only that we don't check (anymore) at due time. Did the specs change meanwhile? Nope, it's still an illegal variable. The code to test is somewhere broken though. I need to look into that. - Bill Yerazunis |