Typelib marshalling BSTRs

Mike Hearn mike at theoretic.com
Wed Jul 23 04:41:12 CDT 2003


On Tue, 2003-07-22 at 17:35, Gregory M. Turner wrote:
> I was kind of ignoring this as my brain is full with cabinet things ATM...  
> but it sure sounds awfully wrong, doesn't it?

Yeah. I have the feeling that some obscure rule of C is biting me on the
backside (again).

> ./include/rpc.h-54-/* ignore exception handling for now */
> ./include/rpc.h-55-#define RpcTryExcept if (1) {
> ./include/rpc.h-56-#define RpcExcept(expr) } else {
> ./include/rpc.h-57-#define RpcEndExcept }
> ./include/rpc.h:58:#define RpcTryFinally
> ./include/rpc.h-59-#define RpcFinally
> ./include/rpc.h-60-#define RpcEndFinally
> ./include/rpc.h-61-#define RpcExceptionCode() 0
> 
> Considering the implementation, this seems like an awfully bizarre behavior.

Oops :) I saw all the fascinating code you were throwing around earlier
for SEH and assumed that the existing code looked a bit like it. Clearly
not.

> Perhaps, this really indicates some kind of problem with the loading / linking 
> or the spec.c file or something like that?  Does the behavior change if you 
> take out the RpcTryFinally?  I would guess not.

It does not. To recap:

REFIID riid = NULL;  - fails, because assignments to it are silently
ignored


REFIID riid;
riid = NULL;  -  works, because ..... it confuses the gremlins?





More information about the wine-devel mailing list