diff --git a/src/hammer.c b/src/hammer.c
index 655e761ff5aa4a01b7211d9fa935ea747181c3b2..5f94142908f48f86a0dde79ccd376c2625063635 100644
--- a/src/hammer.c
+++ b/src/hammer.c
@@ -85,7 +85,7 @@ int h_compile(HParser* parser, HParserBackend backend, const void* params) {
 }
 
 int h_compile__m(HAllocator* mm__, HParser* parser, HParserBackend backend, const void* params) {
-  backends[backend]->free(parser);
+  backends[parser->backend]->free(parser);
   int ret = backends[backend]->compile(mm__, parser, params);
   if (!ret)
     parser->backend = backend;