I just ran across an odd situation, so I thought I'd mention it here and get some feedback on it. I've already put in a workaround for this case, so it isn't urgent, but I didn't want it to go back into hiding if it really is a bug. I haven't done any decent research on it either, so I don't have any test cases or anything, but maybe this report will help somehow.
Ok, I'm working at an old client's site where they're using APL v4. I was working with an ActiveX control and got an event from it where it passed me an object pointer via []WARG.. Normally, I use this pointer directly as a left argument to []WI (to read some ActiveX properties), and most of the time it works fine. However, in some situations I'm getting a DOMAIN ERROR back from []WI here.
So for testing purposes, I changed the code to do a []WI 'New' on the pointer and gave it a GUI name so I could play with it. This works, much to my surprise (because the same pointer was failing before)! Then when I referenced the same object & property using the new object name and everything worked fine! (And yes, I made sure to do all my testing without dropping out into the session and invalidating the pointer.) So I left this code in production and now it's not failing at all.
So, the only thing that I can think of is that the pointer that I found to have a problem was slightly bigger than 2*23. Is it possible that large-valued ActiveX pointers don't (or didn't, in version 4) work properly as a left argument to []WI, but do/did work properly as the right argument to []WI 'New'?