TaxCut and C++ exception handling

Dmitry Timoshkov dmitry at baikal.ru
Mon Feb 17 03:22:25 CST 2003


Hello,

here is the patch.

Changelog:
    Replace RtlRaiseException hack for notifying about a .spec file
    stub entry hit with a more general approach.

diff -u cvs/hq/wine/dlls/ntdll/exception.c wine/dlls/ntdll/exception.c
--- cvs/hq/wine/dlls/ntdll/exception.c	Wed Feb 12 23:03:04 2003
+++ wine/dlls/ntdll/exception.c	Mon Feb 17 16:39:52 2003
@@ -190,8 +190,6 @@
 
     TRACE( "code=%lx flags=%lx addr=%p\n", rec->ExceptionCode, rec->ExceptionFlags, rec->ExceptionAddress );
     for (c=0; c<rec->NumberParameters; c++) TRACE(" info[%ld]=%08lx\n", c, rec->ExceptionInformation[c]);
-    if (rec->ExceptionCode == EXCEPTION_WINE_STUB)
-        FIXME( "call to unimplemented function %s\n", (char*)rec->ExceptionInformation[1] );
 
     if (send_debug_event( rec, TRUE, context ) == DBG_CONTINUE) return;  /* continue execution */
 
diff -u cvs/hq/wine/tools/winebuild/spec16.c wine/tools/winebuild/spec16.c
--- cvs/hq/wine/tools/winebuild/spec16.c	Sat Oct 19 18:08:57 2002
+++ wine/tools/winebuild/spec16.c	Mon Feb 17 16:35:46 2003
@@ -581,6 +581,7 @@
         fprintf( outfile, "    unsigned int params;\n" );
         fprintf( outfile, "    const void *info[15];\n" );
         fprintf( outfile, "  } rec;\n\n" );
+        fprintf( outfile, "  extern int wine_dbg_printf(const char *format, ...);\n" );
         fprintf( outfile, "  extern void __stdcall RtlRaiseException( struct exc_record * );\n\n" );
         fprintf( outfile, "  rec.code    = 0x%08x;\n", EXCEPTION_WINE_STUB );
         fprintf( outfile, "  rec.flags   = %d;\n", EH_NONCONTINUABLE );
@@ -593,6 +594,7 @@
         fprintf( outfile, "#else\n" );
         fprintf( outfile, "  rec.addr = 0;\n" );
         fprintf( outfile, "#endif\n" );
+        fprintf( outfile, "  wine_dbg_printf(\"fixme:%%s:%%s: .spec empty stub!\\n\", (char *)rec.info[0], func);\n" );
         fprintf( outfile, "  for (;;) RtlRaiseException( &rec );\n}\n\n" );
         break;
     }
diff -u cvs/hq/wine/tools/winebuild/spec32.c wine/tools/winebuild/spec32.c
--- cvs/hq/wine/tools/winebuild/spec32.c	Sun Dec 15 17:52:11 2002
+++ wine/tools/winebuild/spec32.c	Mon Feb 17 16:36:23 2003
@@ -348,6 +348,7 @@
         fprintf( outfile, "  unsigned int params;\n" );
         fprintf( outfile, "  const void *info[15];\n" );
         fprintf( outfile, "};\n\n" );
+        fprintf( outfile, "extern int wine_dbg_printf(const char *format, ...);\n" );
         fprintf( outfile, "extern void __stdcall RtlRaiseException( struct exc_record * );\n\n" );
         fprintf( outfile, "static void __wine_unimplemented( const char *func )\n{\n" );
         fprintf( outfile, "  struct exc_record rec;\n" );
@@ -362,6 +363,7 @@
         fprintf( outfile, "#else\n" );
         fprintf( outfile, "  rec.addr = 0;\n" );
         fprintf( outfile, "#endif\n" );
+        fprintf( outfile, "  wine_dbg_printf(\"fixme:%%s:%%s: .spec empty stub!\\n\", (char *)rec.info[0], func);\n" );
         fprintf( outfile, "  for (;;) RtlRaiseException( &rec );\n}\n\n" );
         break;
     }







More information about the wine-patches mailing list