codegen: handle exceptions of a method
[mate.git] / Mate / X86TrapHandling.hs
index b4bf8ca2b5eaa536e36e58fd7b198128546acbd1..82ed7ca0d738ca3ad52b1a0f23562ac8ae0e9597 100644 (file)
@@ -41,7 +41,7 @@ mateHandler reip reax rebx resi resp = do
     (Just (InstanceOf patcher))  ->
         patchWithHarpy (patcher reax) reip >>= delFalse
     (Just (ThrowException patcher)) ->
-        patchWithHarpy (patcher resp) reip >>= delFalse
+        patchWithHarpy (patcher reax resp) reip >>= delFalse
     (Just (NewObject patcher))   ->
         patchWithHarpy patcher reip >>= delTrue
     (Just (VirtualCall False mi io_offset)) ->
@@ -52,8 +52,8 @@ mateHandler reip reax rebx resi resp = do
         >>= delFalse
     Nothing -> case resi of
         0x13371234 -> delFalse (-1)
-        _ -> error $ "getTrapType: abort :-( " ++ showHex reip ". "
-             ++ concatMap (`showHex` ", ") (M.keys tmap)
+        _ -> error $ "getTrapType: abort :-( eip: "
+             ++ showHex reip ". " ++ concatMap (`showHex` ", ") (M.keys tmap)
   when deleteMe $ setTrapMap $ M.delete reipw32 tmap
   return ret_nreip
     where