Small fix for list reading
diff --git a/wireshark_gen/templates/_ofclass_dissector.lua b/wireshark_gen/templates/_ofclass_dissector.lua
index 01ebdeb..8ab20db 100644
--- a/wireshark_gen/templates/_ofclass_dissector.lua
+++ b/wireshark_gen/templates/_ofclass_dissector.lua
@@ -39,6 +39,7 @@
 -- Discriminator is ${ofclass.discriminator.name}
 :: #endif
 function ${name}(reader, subtree)
+:: field = "false"
 :: if ofclass.virtual:
     return ${ofclass.name}_v${version.wire_version}_dissectors[reader.peek(${ofclass.discriminator.offset},${ofclass.discriminator.length}):uint()](reader, subtree)
 :: else:
@@ -54,13 +55,16 @@
 :: continue
 :: #endif
 :: if isinstance(m, OFFieldLengthMember):
-    local field_length = ${r_name}.peek(0, ${m.base_length}):uint()
+    local field_length = ${r_name}.read(${m.base_length}):uint()
     local field_reader = ${r_name}.slice(field_length)
-:: r_name = "field_reader"
+:: field = "true"
 :: continue
 :: #endif
 :: if m.oftype.startswith("list"):
 :: class_name = m.oftype.replace('_t)', '').replace('(', '').replace('list', '')
+:: if field == "true":
+:: r_name = "field_reader"
+:: #endif
     if not ${r_name}.is_empty() then
         local field_subtree = subtree:add("${class_name} list", ${r_name}.peek_all(0))
         while not ${r_name}.is_empty() do
@@ -69,6 +73,7 @@
             atom_subtree:set_text(info)
         end
     end
+:: r_name = "packet_reader"
 :: if ofclass.has_external_alignment:
     reader.skip_align()
 :: #endif