From a0fb6246c0b0134866825414919cc6f6d57bd238 Mon Sep 17 00:00:00 2001 From: Alexandre Julliard Date: Fri, 6 Feb 2009 14:03:29 +0100 Subject: [PATCH] widl: Avoid using GetExceptionCode outside of an exception handler. --- tools/widl/server.c | 5 ++++- tools/widl/typegen.c | 3 ++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/tools/widl/server.c b/tools/widl/server.c index 3b0e2f40f98..359d2e915aa 100644 --- a/tools/widl/server.c +++ b/tools/widl/server.c @@ -392,7 +392,10 @@ static void init_server(void) print_server("\n"); print_server("static int __server_filter( struct __server_frame *__frame )\n"); print_server( "{\n"); - print_server( " return RPC_BAD_STUB_DATA_EXCEPTION_FILTER;\n"); + print_server( " return (__frame->code == STATUS_ACCESS_VIOLATION) ||\n"); + print_server( " (__frame->code == STATUS_DATATYPE_MISALIGNMENT) ||\n"); + print_server( " (__frame->code == RPC_X_BAD_STUB_DATA) ||\n"); + print_server( " (__frame->code == RPC_S_INVALID_BOUND);\n"); print_server( "}\n"); print_server( "\n"); } diff --git a/tools/widl/typegen.c b/tools/widl/typegen.c index 599e2fe70d1..d16f1fd4b5e 100644 --- a/tools/widl/typegen.c +++ b/tools/widl/typegen.c @@ -3686,7 +3686,8 @@ void write_exceptions( FILE *file ) fprintf( file, "#else /* USE_COMPILER_EXCEPTIONS */\n"); fprintf( file, "\n"); fprintf( file, "#define RpcExceptionInit(filter_func,finally_func) do {} while(0)\n"); - fprintf( file, "#define __DECL_EXCEPTION_FRAME\n"); + fprintf( file, "#define __DECL_EXCEPTION_FRAME \\\n"); + fprintf( file, " DWORD code;\n"); fprintf( file, "\n"); fprintf( file, "#endif /* USE_COMPILER_EXCEPTIONS */\n"); } -- 2.11.4.GIT