diff --git a/src/Language/Wasm/Binary.hs b/src/Language/Wasm/Binary.hs index 64ccc62..9648269 100644 --- a/src/Language/Wasm/Binary.hs +++ b/src/Language/Wasm/Binary.hs @@ -877,10 +877,10 @@ instance Serialize ElemSegment where putVec $ map Expr elements get = do - op <- getWord8 let funcIndexes = map ((:[]) . RefFunc . unIndex) <$> getVec let elemKind = byteGuard 0x00 >> return FuncRef - case op of + op <- getULEB128 32 + case (op :: Word8) of 0x00 -> do offset <- getExpression ElemSegment FuncRef (Active 0 offset) <$> funcIndexes diff --git a/tests/Test.hs b/tests/Test.hs index 45f8ec1..62d8482 100644 --- a/tests/Test.hs +++ b/tests/Test.hs @@ -19,7 +19,7 @@ main = do files <- filter (not . List.isPrefixOf "simd") . filter (List.isSuffixOf ".wast") <$> Directory.listDirectory "tests/spec" - -- let files = ["ref_func.wast"] + -- let files = ["binary-leb128.wast"] scriptTestCases <- (`mapM` files) $ \file -> do test <- LBS.readFile ("tests/spec/" ++ file) return $ testCase file $ do