diff --git a/py/lexerstr.c b/py/lexerstr.c
index 8cbf36d8314d987ca0b3522bef393499f5f86058..1e105d8645ea0167a34cbfb03aa17459e0741698 100644
--- a/py/lexerstr.c
+++ b/py/lexerstr.c
@@ -25,6 +25,7 @@ static void str_buf_free(mp_lexer_str_buf_t *sb) {
     if (sb->free_len > 0) {
         m_free((char*)sb->src_beg, sb->free_len);
     }
+    m_del_obj(mp_lexer_str_buf_t, sb);
 }
 
 mp_lexer_t *mp_lexer_new_from_str_len(const char *src_name, const char *str, uint len, uint free_len) {