1
0
Fork 0
mirror of https://github.com/OpenMW/openmw.git synced 2025-02-21 11:39:44 +00:00
openmw/components/esm4
jvoisin 534e20cf3a Replace another assert with a throw
It fixes the following crash:

```nasm
[----------------------------------registers-----------------------------------]
RAX: 0xffffffffffffffe4
RBX: 0x7fffffffbd88 --> 0x0
RCX: 0x555555861f01 --> 0xd6000055555582fa
RDX: 0x1
RSI: 0x0
RDI: 0xff
RBP: 0x2e94
RSP: 0x7fffffff9bb0 --> 0x0
RIP: 0x55555574e286 (<_ZN4ESM44Cell4loadERNS_6ReaderE+182>:	mov    eax,DWORD PTR [rax+0xc])
R8 : 0x0
R9 : 0x555555836bd0 --> 0x555555861f90 --> 0x100000000000000
R10: 0xffffffff
R11: 0x0
R12: 0x7fffffffbd88 --> 0x0
R13: 0x7fffffffbd30 --> 0x7fffffffbd28 --> 0xff0001
R14: 0x7fffffff9da0 --> 0x10fc
R15: 0x7fffffff9ea8 --> 0x7fffffff9eb8 --> 0x0
EFLAGS: 0x10206 (carry PARITY adjust zero sign trap INTERRUPT direction overflow)
[-------------------------------------code-------------------------------------]
   0x55555574e27c <_ZN4ESM44Cell4loadERNS_6ReaderE+172>:	mov    rdi,r12
   0x55555574e27f <_ZN4ESM44Cell4loadERNS_6ReaderE+175>:	xor    esi,esi
   0x55555574e281 <_ZN4ESM44Cell4loadERNS_6ReaderE+177>:	call   0x5555557edfb0 <_ZNK4ESM46Reader3grpEm>
=> 0x55555574e286 <_ZN4ESM44Cell4loadERNS_6ReaderE+182>:	mov    eax,DWORD PTR [rax+0xc]
   0x55555574e289 <_ZN4ESM44Cell4loadERNS_6ReaderE+185>:	cmp    eax,0xff
   0x55555574e28e <_ZN4ESM44Cell4loadERNS_6ReaderE+190>:	ja     0x55555574e314 <_ZN4ESM44Cell4loadERNS_6ReaderE+324>
   0x55555574e294 <_ZN4ESM44Cell4loadERNS_6ReaderE+196>:	cmp    al,0x5
   0x55555574e296 <_ZN4ESM44Cell4loadERNS_6ReaderE+198>:	jne    0x55555574e314 <_ZN4ESM44Cell4loadERNS_6ReaderE+324>
[------------------------------------stack-------------------------------------]
0000| 0x7fffffff9bb0 --> 0x0
0008| 0x7fffffff9bb8 --> 0x0
0016| 0x7fffffff9bc0 --> 0x0
0024| 0x7fffffff9bc8 --> 0x0
0032| 0x7fffffff9bd0 --> 0x0
0040| 0x7fffffff9bd8 --> 0x0
0048| 0x7fffffff9be0 --> 0x0
0056| 0x7fffffff9be8 --> 0x0
[------------------------------------------------------------------------------]
Legend: code, data, rodata, value
Stopped reason: SIGSEGV
0x000055555574e286 in ESM4::Cell::load (this=0x7fffffff9da0, reader=...) at /home/jvoisin/dev/openmw/openmw/components/esm4/loadcell.cpp:68
68	   if (reader.grp().type == ESM4::Grp_ExteriorSubCell && reader.grp().label.grid[1] == 0
gdb-peda$ bt
    this=<optimized out>, reader=...) at /home/jvoisin/dev/openmw/openmw/apps/esmtool/tes4.cpp:547
    recordInvocable=...) at /home/jvoisin/dev/openmw/openmw/./components/esm4/readerutils.hpp:31
    at /home/jvoisin/dev/openmw/openmw/./components/esm4/readerutils.hpp:23
    at ../csu/libc-start.c:381
```
2023-05-21 20:07:52 +02:00
..
actor.hpp Merge ESM::RefNum and ESM4::FormId 2023-04-09 00:23:32 +02:00
cellgrid.hpp Merge ESM::RefNum and ESM4::FormId 2023-04-09 00:23:32 +02:00
common.hpp Split components/esm4/common.hpp header 2023-04-04 10:12:20 +02:00
dialogue.hpp Apply clang-format to code base 2022-09-22 21:35:26 +03:00
effect.hpp Merge ESM::RefNum and ESM4::FormId 2023-04-09 00:23:32 +02:00
formid.cpp Merge ESM::RefNum and ESM4::FormId 2023-04-09 00:23:32 +02:00
formid.hpp Merge ESM::RefNum and ESM4::FormId 2023-04-09 00:23:32 +02:00
grid.hpp Split components/esm4/common.hpp header 2023-04-04 10:12:20 +02:00
grouptype.hpp Split components/esm4/common.hpp header 2023-04-04 10:12:20 +02:00
inventory.hpp Merge ESM::RefNum and ESM4::FormId 2023-04-09 00:23:32 +02:00
lighting.hpp Minor header cleanup 2023-04-30 16:26:03 +02:00
loadachr.cpp Read ESM::FormId using ESM4::Reader::getFormId 2023-05-17 22:59:29 +02:00
loadachr.hpp Apply clang-format to code base 2022-09-22 21:35:26 +03:00
loadacre.cpp Read ESM::FormId using ESM4::Reader::getFormId 2023-05-17 22:59:29 +02:00
loadacre.hpp Apply clang-format to code base 2022-09-22 21:35:26 +03:00
loadacti.cpp Load more ESM4 records 2023-04-09 18:52:11 +02:00
loadacti.hpp Load more ESM4 records 2023-04-09 18:52:11 +02:00
loadalch.cpp Load more ESM4 records 2023-04-09 18:52:11 +02:00
loadalch.hpp Load more ESM4 records 2023-04-09 18:52:11 +02:00
loadaloc.cpp Merge ESM::RefNum and ESM4::FormId 2023-04-09 00:23:32 +02:00
loadaloc.hpp Apply clang-format to code base 2022-09-22 21:35:26 +03:00
loadammo.cpp Load more ESM4 records 2023-04-09 18:52:11 +02:00
loadammo.hpp Load more ESM4 records 2023-04-09 18:52:11 +02:00
loadanio.cpp Merge ESM::RefNum and ESM4::FormId 2023-04-09 00:23:32 +02:00
loadanio.hpp Apply clang-format to code base 2022-09-22 21:35:26 +03:00
loadappa.cpp Merge ESM::RefNum and ESM4::FormId 2023-04-09 00:23:32 +02:00
loadappa.hpp Apply clang-format to code base 2022-09-22 21:35:26 +03:00
loadarma.cpp Merge ESM::RefNum and ESM4::FormId 2023-04-09 00:23:32 +02:00
loadarma.hpp Apply clang-format to code base 2022-09-22 21:35:26 +03:00
loadarmo.cpp Load more ESM4 records 2023-04-09 18:52:11 +02:00
loadarmo.hpp Load more ESM4 records 2023-04-09 18:52:11 +02:00
loadaspc.cpp Merge ESM::RefNum and ESM4::FormId 2023-04-09 00:23:32 +02:00
loadaspc.hpp Apply clang-format to code base 2022-09-22 21:35:26 +03:00
loadbook.cpp Load more ESM4 records 2023-04-09 18:52:11 +02:00
loadbook.hpp Load more ESM4 records 2023-04-09 18:52:11 +02:00
loadbptd.cpp Merge ESM::RefNum and ESM4::FormId 2023-04-09 00:23:32 +02:00
loadbptd.hpp Merge ESM::RefNum and ESM4::FormId 2023-04-09 00:23:32 +02:00
loadcell.cpp mWater level disabled for skyrim. 2023-05-12 22:05:54 +02:00
loadcell.hpp Explicitly intialize the fields in ESM4::Cell that don't have default constructors. 2023-05-18 20:21:47 +02:00
loadclas.cpp Merge ESM::RefNum and ESM4::FormId 2023-04-09 00:23:32 +02:00
loadclas.hpp Apply clang-format to code base 2022-09-22 21:35:26 +03:00
loadclfm.cpp Merge ESM::RefNum and ESM4::FormId 2023-04-09 00:23:32 +02:00
loadclfm.hpp Apply clang-format to code base 2022-09-22 21:35:26 +03:00
loadclot.cpp Load more ESM4 records 2023-04-09 18:52:11 +02:00
loadclot.hpp Load more ESM4 records 2023-04-09 18:52:11 +02:00
loadcont.cpp Load more ESM4 records 2023-04-09 18:52:11 +02:00
loadcont.hpp Load more ESM4 records 2023-04-09 18:52:11 +02:00
loadcrea.cpp Read ESM::FormId using ESM4::Reader::getFormId 2023-05-17 22:59:29 +02:00
loadcrea.hpp Apply clang-format to code base 2022-09-22 21:35:26 +03:00
loaddial.cpp Merge ESM::RefNum and ESM4::FormId 2023-04-09 00:23:32 +02:00
loaddial.hpp Remove unused includes 2022-10-09 16:44:18 +02:00
loaddobj.cpp Merge ESM::RefNum and ESM4::FormId 2023-04-09 00:23:32 +02:00
loaddobj.hpp Apply clang-format to code base 2022-09-22 21:35:26 +03:00
loaddoor.cpp Load more ESM4 records 2023-04-09 18:52:11 +02:00
loaddoor.hpp Load more ESM4 records 2023-04-09 18:52:11 +02:00
loadeyes.cpp Merge ESM::RefNum and ESM4::FormId 2023-04-09 00:23:32 +02:00
loadeyes.hpp Apply clang-format to code base 2022-09-22 21:35:26 +03:00
loadflor.cpp Merge ESM::RefNum and ESM4::FormId 2023-04-09 00:23:32 +02:00
loadflor.hpp Apply clang-format to code base 2022-09-22 21:35:26 +03:00
loadflst.cpp Merge ESM::RefNum and ESM4::FormId 2023-04-09 00:23:32 +02:00
loadflst.hpp Apply clang-format to code base 2022-09-22 21:35:26 +03:00
loadfurn.cpp Merge ESM::RefNum and ESM4::FormId 2023-04-09 00:23:32 +02:00
loadfurn.hpp Apply clang-format to code base 2022-09-22 21:35:26 +03:00
loadglob.cpp Merge ESM::RefNum and ESM4::FormId 2023-04-09 00:23:32 +02:00
loadglob.hpp Apply clang-format to code base 2022-09-22 21:35:26 +03:00
loadgmst.cpp Support reading bool GMST by ESM4 2023-05-17 22:59:34 +02:00
loadgmst.hpp Support reading bool GMST by ESM4 2023-05-17 22:59:34 +02:00
loadgras.cpp Merge ESM::RefNum and ESM4::FormId 2023-04-09 00:23:32 +02:00
loadgras.hpp Apply clang-format to code base 2022-09-22 21:35:26 +03:00
loadgrup.hpp Minor header cleanup 2023-04-30 16:26:03 +02:00
loadhair.cpp Merge ESM::RefNum and ESM4::FormId 2023-04-09 00:23:32 +02:00
loadhair.hpp Apply clang-format to code base 2022-09-22 21:35:26 +03:00
loadhdpt.cpp Merge ESM::RefNum and ESM4::FormId 2023-04-09 00:23:32 +02:00
loadhdpt.hpp Apply clang-format to code base 2022-09-22 21:35:26 +03:00
loadidle.cpp Support ESM4 IDLE record 2023-05-17 22:59:34 +02:00
loadidle.hpp Support ESM4 IDLE record 2023-05-17 22:59:34 +02:00
loadidlm.cpp Read ESM::FormId using ESM4::Reader::getFormId 2023-05-17 22:59:29 +02:00
loadidlm.hpp Apply clang-format to code base 2022-09-22 21:35:26 +03:00
loadimod.cpp Merge ESM::RefNum and ESM4::FormId 2023-04-09 00:23:32 +02:00
loadimod.hpp Apply clang-format to code base 2022-09-22 21:35:26 +03:00
loadinfo.cpp Merge ESM::RefNum and ESM4::FormId 2023-04-09 00:23:32 +02:00
loadinfo.hpp Remove unused includes 2022-10-09 16:44:18 +02:00
loadingr.cpp Load more ESM4 records 2023-04-09 18:52:11 +02:00
loadingr.hpp Load more ESM4 records 2023-04-09 18:52:11 +02:00
loadkeym.cpp Merge ESM::RefNum and ESM4::FormId 2023-04-09 00:23:32 +02:00
loadkeym.hpp Apply clang-format to code base 2022-09-22 21:35:26 +03:00
loadland.cpp Fix regressions in ESM4 reader caused by !2902 2023-04-22 17:07:54 +02:00
loadland.hpp Fix regressions in ESM4 reader caused by !2902 2023-04-22 17:07:54 +02:00
loadlgtm.cpp Merge ESM::RefNum and ESM4::FormId 2023-04-09 00:23:32 +02:00
loadlgtm.hpp Merge ESM::RefNum and ESM4::FormId 2023-04-09 00:23:32 +02:00
loadligh.cpp Load more ESM4 records 2023-04-09 18:52:11 +02:00
loadligh.hpp Load light models in the engine. Doesn't emit light 2023-02-06 20:22:17 +01:00
loadltex.cpp Merge ESM::RefNum and ESM4::FormId 2023-04-09 00:23:32 +02:00
loadltex.hpp Apply clang-format to code base 2022-09-22 21:35:26 +03:00
loadlvlc.cpp Merge ESM::RefNum and ESM4::FormId 2023-04-09 00:23:32 +02:00
loadlvlc.hpp Apply clang-format to code base 2022-09-22 21:35:26 +03:00
loadlvli.cpp Merge ESM::RefNum and ESM4::FormId 2023-04-09 00:23:32 +02:00
loadlvli.hpp Apply clang-format to code base 2022-09-22 21:35:26 +03:00
loadlvln.cpp Merge ESM::RefNum and ESM4::FormId 2023-04-09 00:23:32 +02:00
loadlvln.hpp Apply clang-format to code base 2022-09-22 21:35:26 +03:00
loadmato.cpp Merge ESM::RefNum and ESM4::FormId 2023-04-09 00:23:32 +02:00
loadmato.hpp Apply clang-format to code base 2022-09-22 21:35:26 +03:00
loadmisc.cpp Load more ESM4 records 2023-04-09 18:52:11 +02:00
loadmisc.hpp Load more ESM4 records 2023-04-09 18:52:11 +02:00
loadmset.cpp Merge ESM::RefNum and ESM4::FormId 2023-04-09 00:23:32 +02:00
loadmset.hpp Apply clang-format to code base 2022-09-22 21:35:26 +03:00
loadmstt.cpp Read ESM::FormId using ESM4::Reader::getFormId 2023-05-17 22:59:29 +02:00
loadmstt.hpp Apply clang-format to code base 2022-09-22 21:35:26 +03:00
loadmusc.cpp Merge ESM::RefNum and ESM4::FormId 2023-04-09 00:23:32 +02:00
loadmusc.hpp Apply clang-format to code base 2022-09-22 21:35:26 +03:00
loadnavi.cpp Read ESM::FormId using ESM4::Reader::getFormId 2023-05-17 22:59:29 +02:00
loadnavi.hpp Merge ESM::RefNum and ESM4::FormId 2023-04-09 00:23:32 +02:00
loadnavm.cpp Read ESM::FormId using ESM4::Reader::getFormId 2023-05-17 22:59:29 +02:00
loadnavm.hpp Merge ESM::RefNum and ESM4::FormId 2023-04-09 00:23:32 +02:00
loadnote.cpp Merge ESM::RefNum and ESM4::FormId 2023-04-09 00:23:32 +02:00
loadnote.hpp Apply clang-format to code base 2022-09-22 21:35:26 +03:00
loadnpc.cpp Read ESM::FormId using ESM4::Reader::getFormId 2023-05-17 22:59:29 +02:00
loadnpc.hpp Apply clang-format to code base 2022-09-22 21:35:26 +03:00
loadotft.cpp Merge ESM::RefNum and ESM4::FormId 2023-04-09 00:23:32 +02:00
loadotft.hpp Apply clang-format to code base 2022-09-22 21:35:26 +03:00
loadpack.cpp Merge ESM::RefNum and ESM4::FormId 2023-04-09 00:23:32 +02:00
loadpack.hpp Merge ESM::RefNum and ESM4::FormId 2023-04-09 00:23:32 +02:00
loadpgrd.cpp Fix regressions in ESM4 reader caused by !2902 2023-04-22 17:07:54 +02:00
loadpgrd.hpp Apply clang-format to code base 2022-09-22 21:35:26 +03:00
loadpgre.cpp Merge ESM::RefNum and ESM4::FormId 2023-04-09 00:23:32 +02:00
loadpgre.hpp Apply clang-format to code base 2022-09-22 21:35:26 +03:00
loadpwat.cpp Merge ESM::RefNum and ESM4::FormId 2023-04-09 00:23:32 +02:00
loadpwat.hpp Apply clang-format to code base 2022-09-22 21:35:26 +03:00
loadqust.cpp Fix regressions in ESM4 reader caused by !2902 2023-04-22 17:07:54 +02:00
loadqust.hpp Apply clang-format to code base 2022-09-22 21:35:26 +03:00
loadrace.cpp Fix regressions in ESM4 reader caused by !2902 2023-04-22 17:07:54 +02:00
loadrace.hpp Merge ESM::RefNum and ESM4::FormId 2023-04-09 00:23:32 +02:00
loadrefr.cpp Make Store<ESM4::Reference> to use FormId instead of RefId 2023-04-20 01:47:16 +02:00
loadrefr.hpp Make Store<ESM4::Reference> to use FormId instead of RefId 2023-04-20 01:47:16 +02:00
loadregn.cpp Merge ESM::RefNum and ESM4::FormId 2023-04-09 00:23:32 +02:00
loadregn.hpp Merge ESM::RefNum and ESM4::FormId 2023-04-09 00:23:32 +02:00
loadroad.cpp Merge ESM::RefNum and ESM4::FormId 2023-04-09 00:23:32 +02:00
loadroad.hpp Apply clang-format to code base 2022-09-22 21:35:26 +03:00
loadsbsp.cpp Merge ESM::RefNum and ESM4::FormId 2023-04-09 00:23:32 +02:00
loadsbsp.hpp Fix -Wnon-virtual-dtor warnings 2023-02-03 23:00:09 +01:00
loadscol.cpp Merge ESM::RefNum and ESM4::FormId 2023-04-09 00:23:32 +02:00
loadscol.hpp Apply clang-format to code base 2022-09-22 21:35:26 +03:00
loadscpt.cpp Merge ESM::RefNum and ESM4::FormId 2023-04-09 00:23:32 +02:00
loadscpt.hpp Apply clang-format to code base 2022-09-22 21:35:26 +03:00
loadscrl.cpp Merge ESM::RefNum and ESM4::FormId 2023-04-09 00:23:32 +02:00
loadscrl.hpp Apply clang-format to code base 2022-09-22 21:35:26 +03:00
loadsgst.cpp Merge ESM::RefNum and ESM4::FormId 2023-04-09 00:23:32 +02:00
loadsgst.hpp Apply clang-format to code base 2022-09-22 21:35:26 +03:00
loadslgm.cpp Merge ESM::RefNum and ESM4::FormId 2023-04-09 00:23:32 +02:00
loadslgm.hpp Apply clang-format to code base 2022-09-22 21:35:26 +03:00
loadsndr.cpp Merge ESM::RefNum and ESM4::FormId 2023-04-09 00:23:32 +02:00
loadsndr.hpp Apply clang-format to code base 2022-09-22 21:35:26 +03:00
loadsoun.cpp Merge ESM::RefNum and ESM4::FormId 2023-04-09 00:23:32 +02:00
loadsoun.hpp Apply clang-format to code base 2022-09-22 21:35:26 +03:00
loadstat.cpp Load more ESM4 records 2023-04-09 18:52:11 +02:00
loadstat.hpp Restore original formId 2023-01-29 02:35:06 +01:00
loadtact.cpp Merge ESM::RefNum and ESM4::FormId 2023-04-09 00:23:32 +02:00
loadtact.hpp Apply clang-format to code base 2022-09-22 21:35:26 +03:00
loadterm.cpp Merge ESM::RefNum and ESM4::FormId 2023-04-09 00:23:32 +02:00
loadterm.hpp Apply clang-format to code base 2022-09-22 21:35:26 +03:00
loadtes4.cpp Guard an undefined behaviour 2023-05-20 19:35:06 +02:00
loadtes4.hpp Apply clang-format to code base 2022-09-22 21:35:26 +03:00
loadtree.cpp Merge ESM::RefNum and ESM4::FormId 2023-04-09 00:23:32 +02:00
loadtree.hpp Apply clang-format to code base 2022-09-22 21:35:26 +03:00
loadtxst.cpp Merge ESM::RefNum and ESM4::FormId 2023-04-09 00:23:32 +02:00
loadtxst.hpp Apply clang-format to code base 2022-09-22 21:35:26 +03:00
loadweap.cpp Load more ESM4 records 2023-04-09 18:52:11 +02:00
loadweap.hpp Load more ESM4 records 2023-04-09 18:52:11 +02:00
loadwrld.cpp Fix uninitialized mWaterLevel in esm4/loadwrld.cpp 2023-05-18 02:10:39 +02:00
loadwrld.hpp Initial attempt at loading esm4 exteriors 2023-05-12 22:05:52 +02:00
magiceffectid.hpp Split components/esm4/common.hpp header 2023-04-04 10:12:20 +02:00
reader.cpp Replace another assert with a throw 2023-05-21 20:07:52 +02:00
reader.hpp Read ESM::FormId using ESM4::Reader::getFormId 2023-05-17 22:59:29 +02:00
readerutils.hpp Split components/esm4/common.hpp header 2023-04-04 10:12:20 +02:00
records.hpp Support loading ESM4 GMST records 2023-04-04 09:59:35 +02:00
reference.hpp Merge ESM::RefNum and ESM4::FormId 2023-04-09 00:23:32 +02:00
script.hpp Merge ESM::RefNum and ESM4::FormId 2023-04-09 00:23:32 +02:00
typetraits.hpp Support loading ESM4 GMST records 2023-04-04 09:59:35 +02:00
vertex.hpp Split components/esm4/common.hpp header 2023-04-04 10:12:20 +02:00