> That's exactly what I ended up doing. I guess I was just a little too
> green to do it right the first time. I didn't know how to pass a SAFEARRAY
> correctly, so I thought I'd hide the problem and put it in a VARIANT :-)
> 
> Strangely, this actually worked for my C++ clients.

Best I can tell, there is no reason it's not legal - it's just unusual :)
You could argue that we should just recurse away on VT_VARIANT until we find
a real type.  I was kinda hoping you had a legitimate case it was failing
with, as then it would have been clearer it was a bug :)  Particularly, the
top of that function has:

        /* skip past any variant references to a "real" variant 
          (Why do we do this?  Why is it only a VARIANT?  whats the story,
morning glory?
        */
        while ( V_VT(var) == (VT_BYREF | VT_VARIANT) )
                var = V_VARIANTREF(var);

but the code fails to gracefully handle the non-byref variant case, as you
found.  Oh well, some other day (or if someone is keen, a bug couldn't
hurt...)

Cheers,

Mark

_______________________________________________
python-win32 mailing list
python-win32@python.org
http://mail.python.org/mailman/listinfo/python-win32

Reply via email to