Skip to content

Commit cb9e881

Browse files
committed
Fix setting dynamic field for enums
1 parent b5badc9 commit cb9e881

File tree

3 files changed

+18
-18
lines changed

3 files changed

+18
-18
lines changed

dissect/cstruct/types/enum.py

+1
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@ def __call__(
3939
enum_cls.cs = cs
4040
enum_cls.type = type_
4141
enum_cls.size = type_.size
42+
enum_cls.dynamic = type_.dynamic
4243
enum_cls.alignment = type_.alignment
4344

4445
_fix_alias_members(enum_cls)

tests/test_basic.py

+17
Original file line numberDiff line numberDiff line change
@@ -505,3 +505,20 @@ def test_size_and_aligment(cs: cstruct):
505505
test = cs._make_packed_type("test", "B", int, alignment=8)
506506
assert test.size == 1
507507
assert test.alignment == 8
508+
509+
510+
def test_dynamic_substruct_size(cs: cstruct):
511+
cdef = """
512+
struct {
513+
int32 len;
514+
char str[len];
515+
} sub;
516+
517+
struct {
518+
sub data[1];
519+
} test;
520+
"""
521+
cs.load(cdef)
522+
523+
assert cs.sub.dynamic
524+
assert cs.test.dynamic

tests/test_parser.py

-18
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
from unittest.mock import Mock
22

3-
from dissect.cstruct import cstruct
43
from dissect.cstruct.parser import TokenParser
54

65

@@ -24,20 +23,3 @@ def test_preserve_comment_newlines():
2423

2524
mock_token.match.start.return_value = data.index("#define multi_anchor")
2625
assert TokenParser._lineno(mock_token) == 9
27-
28-
29-
def test_dynamic_substruct_size(cs: cstruct):
30-
cdef = """
31-
struct {
32-
int32 len;
33-
char str[len];
34-
} sub;
35-
36-
struct {
37-
sub data[1];
38-
} test;
39-
"""
40-
cs.load(cdef)
41-
42-
assert cs.sub.dynamic
43-
assert cs.test.dynamic

0 commit comments

Comments
 (0)