ITADN

Error in parsing of MLINESTYLE (AC1012/AC1014/?)

#1230Openmichal-josef-spacek 创建于 2026-03-29
bug
Example file: [m.dwg.gz](https://github.com/user-attachments/files/26332535/m.dwg.gz) Parsing of 4C object: ``` Next object: 27 Handleoff: 0x2F [UMC] Offset: 233 [MC] @2882 ========================================== Object number: 27/1B, Size: 81 [MS], Type: 73 [BS], Address: 2884 Add object MLINESTYLE [27] Decode object MLINESTYLE handle: 0.1.4C [H 5] EED[0] size: 0 (end) num_eed: 0 bitsize: 604 [RL] Hdlsize: 0x2C, hdl_dat: @75.4 - @81.0 (81) num_reactors: 1 [BL 0] ownerhandle: (4.1.E) abs:E [H 330] reactors[0]: (4.1.E) abs:E [H* 330] => DICTIONARY xdicobjhandle: (3.0.0) abs:0 [H 360] --common_size: 60 name: "FOO" [TV 2] description: "" [TV 0] flag: 0 [BS 70] fill_color.index: 0 [CMC.BS 62] start_angle: 1.5708 [BD 51] 90º end_angle: 1.5708 [BD 52] 90º num_lines: 7 [RC 71] ERROR: Invalid MLINESTYLE.lines x 7 object_map{4C} = 27 padding: C0/0 (6 bits) crc: FD87 [RSx] check_CRC 2882-2965 = 83: FD87 == FD87 ``` After changing of MULTILINE (dwg.spec) ``` REPEAT (num_lines, lines, Dwg_MLINESTYLE_line) ``` to ``` REPEAT_C (num_lines, lines, Dwg_MLINESTYLE_line) ``` output is: ``` Next object: 27 Handleoff: 0x2F [UMC] Offset: 233 [MC] @2882 ========================================== Object number: 27/1B, Size: 81 [MS], Type: 73 [BS], Address: 2884 Add object MLINESTYLE [27] Decode object MLINESTYLE handle: 0.1.4C [H 5] EED[0] size: 0 (end) num_eed: 0 bitsize: 604 [RL] Hdlsize: 0x2C, hdl_dat: @75.4 - @81.0 (81) num_reactors: 1 [BL 0] ownerhandle: (4.1.E) abs:E [H 330] reactors[0]: (4.1.E) abs:E [H* 330] => DICTIONARY xdicobjhandle: (3.0.0) abs:0 [H 360] --common_size: 60 name: "FOO" [TV 2] description: "" [TV 0] flag: 0 [BS 70] fill_color.index: 0 [CMC.BS 62] start_angle: 1.5708 [BD 51] 90º end_angle: 1.5708 [BD 52] 90º num_lines: 7 [RC 71] lines[0].offset: 3 [BD 49] lines[rcount1].color.index: 10 [CMC.BS 62] lines[0].lt.index: 32767 [BSd 6] lines[1].offset: 2 [BD 49] lines[rcount1].color.index: 256 [CMC.BS 62] lines[1].lt.index: 32767 [BSd 6] lines[2].offset: 1 [BD 49] lines[rcount1].color.index: 256 [CMC.BS 62] lines[2].lt.index: 32767 [BSd 6] lines[3].offset: 0 [BD 49] lines[rcount1].color.index: 256 [CMC.BS 62] lines[3].lt.index: 32767 [BSd 6] lines[4].offset: 0 [BD 49] lines[rcount1].color.index: 256 [CMC.BS 62] lines[4].lt.index: 32767 [BSd 6] lines[5].offset: 0 [BD 49] lines[rcount1].color.index: 256 [CMC.BS 62] lines[5].lt.index: 32767 [BSd 6] lines[6].offset: -3 [BD 49] lines[rcount1].color.index: 256 [CMC.BS 62] lines[6].lt.index: 32767 [BSd 6] padding: +4 object_map{4C} = 27 padding: 7/7 (4 bits) crc: FD87 [RSx] check_CRC 2882-2965 = 83: FD87 == FD87 ```
2 条评论