ID:87520
 
Resolved
Fixed in 462
BYOND Version:461
Operating System:Windows 7 Home Premium
Web Browser:Firefox 3.5.5
Status: Resolved (462)

This issue has been resolved.
Descriptive Problem Summary:
When the call() proc is called in the call(Object,ProcName)(Arguments) format, if Object is given as an item in a list, the proc silently fails. The correct proc is not called, but there is no error message either. This is very weird behavior - could we at least get a 'BYOND Bug' message?

Numbered Steps to Reproduce Problem:
1. Run code below.
2. Try to use the 'test' verb, it should fail.
3. Uncomment the two commented lines and comment the first line with call() on it.
4. Run the code, the test verb should work now.

Code Snippet (if applicable) to Reproduce Problem:
client
verb/test(txt as text)
var/list/L=list(src)
call(L[1], "print")(txt)
//var/client/C=L[1]
//call(C, "print")(txt)

proc/print(msg)
world<<"[src]: [msg]"


Expected Results:
When the test verb is run, the text given by the user is displayed to the world.

Actual Results:
Confusingly, nothing happens at all.

Workarounds:
See above.
I suspect because it doesn't know what the type is, as it's in a list. It could be a number, a text string, maybe an object of any old type.
Bug fix: Use of call() in situations that the compiler thought referred to an external DLL did not act like a normal call() at runtime, even if the first argument was not a library name.