1
0
Fork 0
mirror of https://github.com/OpenMW/openmw.git synced 2025-11-30 06:34:33 +00:00
Commit graph

8767 commits

Author SHA1 Message Date
Alexei Kotov
96565e9afb Merge branch 'fix_clang_tidy_warnings' into 'master'
Fix clang tidy warnings (version 21.1.6)

See merge request OpenMW/openmw!5015
2025-11-27 01:16:51 +03:00
Alexei Kotov
c31b4efc01 Merge branch 'globaltargetnumberone' into 'master'
Improve support for global script targets

Closes #2316, #7830, and #2311

See merge request OpenMW/openmw!4812
2025-11-27 01:16:25 +03:00
elsid
feb9cc004c
Fix portability-avoid-pragma-once warnings
components/misc/helpviewer.hpp:1:1: error: avoid 'pragma once' directive; use include guards instead [portability-avoid-pragma-once,-warnings-as-errors]
    1 | #pragma once
      | ^

apps/opencs/view/world/tableheadermouseeventhandler.hpp:1:1: error: avoid 'pragma once' directive; use include guards instead [portability-avoid-pragma-once,-warnings-as-errors]
    1 | #pragma once
      | ^
2025-11-25 21:16:50 +01:00
elsid
4186ca6ceb
Fix clang-analyzer-security.ArrayBound warning
Size of an array is not a valid index.

components/esm4/reader.cpp:925:15: error: Out of bound access to memory after the end of 'sGroupType' [clang-analyzer-security.ArrayBound,-warnings-as-errors]
  925 |         ss << sGroupType[std::min<std::size_t>(type, std::size(sGroupType))]; // avoid out of range
      |               ^
components/esm4/reader.cpp:627:13: note: Assuming field 'groupSize' is equal to field 'recHeaderSize'
  627 |         if (mCtx.recordHeader.group.groupSize == (std::uint32_t)mCtx.recHeaderSize)
      |             ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
components/esm4/reader.cpp:627:9: note: Taking true branch
  627 |         if (mCtx.recordHeader.group.groupSize == (std::uint32_t)mCtx.recHeaderSize)
      |         ^
components/esm4/reader.cpp:634:17: note: Assuming the condition is true
  634 |             if (!mCtx.groupStack.empty()) // top group may be empty (e.g. HAIR in Skyrim)
      |                 ^~~~~~~~~~~~~~~~~~~~~~~~
components/esm4/reader.cpp:634:13: note: Taking true branch
  634 |             if (!mCtx.groupStack.empty()) // top group may be empty (e.g. HAIR in Skyrim)
      |             ^
components/esm4/reader.cpp:638:17: note: Calling 'Reader::exitGroupCheck'
  638 |                 exitGroupCheck();
      |                 ^~~~~~~~~~~~~~~~
components/esm4/reader.cpp:650:13: note: Assuming the condition is false
  650 |         if (mCtx.groupStack.empty())
      |             ^~~~~~~~~~~~~~~~~~~~~~~
components/esm4/reader.cpp:650:9: note: Taking false branch
  650 |         if (mCtx.groupStack.empty())
      |         ^
components/esm4/reader.cpp:655:16: note: Assuming 'lastGroupSize' is <= field 'second'
  655 |         while (mCtx.groupStack.back().second >= lastGroupSize)
      |                ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
components/esm4/reader.cpp:655:9: note: Loop condition is true.  Entering loop body
  655 |         while (mCtx.groupStack.back().second >= lastGroupSize)
      |         ^
components/esm4/reader.cpp:663:17: note: Assuming 'overshoot' is <= 0
  663 |             if (overshoot > 0)
      |                 ^~~~~~~~~~~~~
components/esm4/reader.cpp:663:13: note: Taking false branch
  663 |             if (overshoot > 0)
      |             ^
components/esm4/reader.cpp:676:17: note: Assuming the condition is false
  676 |             if (mCtx.groupStack.empty())
      |                 ^~~~~~~~~~~~~~~~~~~~~~~
components/esm4/reader.cpp:676:13: note: Taking false branch
  676 |             if (mCtx.groupStack.empty())
      |             ^
components/esm4/reader.cpp:682:17: note: Assuming 'lastGroupSize' is >= field 'second'
  682 |             if (lastGroupSize < mCtx.groupStack.back().second)
      |                 ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
components/esm4/reader.cpp:682:13: note: Taking false branch
  682 |             if (lastGroupSize < mCtx.groupStack.back().second)
      |             ^
components/esm4/reader.cpp:686:17: note: Assuming 'lastGroupSize' is < field 'second'
  686 |             if (mCtx.groupStack.back().second > lastGroupSize) // FIXME: debugging only
      |                 ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
components/esm4/reader.cpp:686:13: note: Taking true branch
  686 |             if (mCtx.groupStack.back().second > lastGroupSize) // FIXME: debugging only
      |             ^
components/esm4/reader.cpp:687:30: note: Calling 'printLabel'
  687 |                 std::cerr << printLabel(mCtx.groupStack.back().first.label, mCtx.groupStack.back().first.type)
      |                              ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
components/esm4/reader.cpp:925:15: note: Access of 'sGroupType' at index 12, while it holds only 12 'class std::basic_string_view<char>' elements
  925 |         ss << sGroupType[std::min<std::size_t>(type, std::size(sGroupType))]; // avoid out of range
      |               ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2025-11-25 00:03:39 +01:00
jvoisin
472240526d Merge branch 'fix_niftest_afl_findings' into 'master'
Fix AFL findings in niftest

See merge request OpenMW/openmw!4988
2025-11-24 21:41:46 +00:00
Alexei Kotov
c687a21ccb Merge branch 'enum_naming' into 'master'
Fix and enforce enum naming (#8424)

See merge request OpenMW/openmw!4986
2025-11-23 22:36:23 +03:00
elsid
7e1c1e8625
Use proper type for bhkRagdollTemplate::mBones 2025-11-23 13:21:41 +01:00
elsid
246759ecd2
Only reserve capacity when reading collections
But do not initialize. If the meta information is invalid and has a big
value, initialization will take significant amount of time but there
might be no actual data in the file because it's too small.
2025-11-23 13:17:00 +01:00
elsid
434f450778
Check Nif::RecordPtrT in debug builds
To verify class invariant.
2025-11-23 13:17:00 +01:00
elsid
0c2164330b
Use at instead of operator[] to access nif record types
To fix crash on out of bounds access.
2025-11-23 13:17:00 +01:00
elsid
20c388a410
Replace asserts by exceptions in RecordPtrT
It's possible to fail when reading nif file.
2025-11-23 13:17:00 +01:00
elsid
aa4caae2bf
Use proper naming for Nif::RecordPtrT index 2025-11-23 13:16:59 +01:00
elsid
e882c1c722
Check if nif stream has requested amount of data
Memory allocation with initialization may take significat amount of time
if meta information does not match actual content.
2025-11-23 13:16:59 +01:00
elsid
1ae0aadfed
Use fail function to verify nif stream state
If there is a failure to read the file like incomplete read, bad returns
false, but fail returns true. This is important for reading number of
items more than the file actually has.
2025-11-23 13:16:59 +01:00
Alexei Kotov
b49b048f72 Merge branch 'warn-baby-warn-warning-inferno' into 'master'
Warning inferno - fix warnings, then fix warnings

Closes #8674

See merge request OpenMW/openmw!4927
2025-11-23 15:01:53 +03:00
elsid
d4ce5a2ac6
Fix and enforce enum naming 2025-11-22 11:19:18 +01:00
Evil Eye
c06f94fee8 Merge branch 'fix_esmtool_afl_findings' into 'master'
Check index for ESM4 race parts

See merge request OpenMW/openmw!4987
2025-11-16 13:18:27 +00:00
Dave Corley
307a131ca0 FIX: Correct compile error on newest clang 2025-11-11 11:25:52 -06:00
AnyOldName3
447e01504e Another capitalisation warning 2025-11-10 21:34:46 +00:00
jvoisin
c09cb5c0de Merge branch 'fileview' into 'master'
Use std::string_view in file collections

See merge request OpenMW/openmw!4909
2025-11-10 21:08:05 +00:00
AnyOldName3
9d0a8eb8c4 New warning from !4980
It didn't like snake case, and then MSVC wasn't happened that it shadowed the constexpr value with the same name
2025-11-10 19:08:09 +00:00
AnyOldName3
f8553f2e8a Resolve new warning from !4798 2025-11-10 16:03:02 +00:00
AnyOldName3
43fecf48c7 Fix new warnings from !4925
I don't understand why this needed doing now, as this was merged weeks ago and I thought I'd absorbed conflicts since then.
2025-11-10 16:02:36 +00:00
AnyOldName3
ef8e7d97cb Resolve merge conflicts from !4971 2025-11-10 16:01:47 +00:00
AnyOldName3
f31ec2b3a5 Merge branch 'printf' into 'master'
Bring messagebox format parsing more in line with printf/vanilla

Closes #8732

See merge request OpenMW/openmw!4878
2025-11-10 15:23:48 +00:00
uramer
3be1010d03 Merge branch 'protectthecall' into 'master'
Ensure LuaUtil::call is invoked from a safe context

Closes #8769

See merge request OpenMW/openmw!4971
2025-11-10 09:50:10 +00:00
elsid
c7830d9ee5
Check index for ESM4 race parts
To avoid out of bounds access. Index is a part of the file contents so
it can be invalid.
2025-11-09 21:49:41 +01:00
Alexei Kotov
2e4020a244 Merge branch 'mwui' into 'master'
Dehardcode script settings window font and colors

See merge request OpenMW/openmw!4798
2025-11-09 06:55:38 +03:00
Andrei Kortunov
6d3f5cf70c Dehardcode script settings window font and colors 2025-11-08 20:31:24 +04:00
rapidsamphire
a3d99ce636 Add post-processing for bhkListShape subshapes
bhkListShape contains a list of subshape references that need to be
resolved after initial parsing. Without calling postRecordList(), the
mSubshapes list would contain unresolved RecordPtrs.

This adds the missing post() override to properly load subshape data,
consistent with other NIF record types that contain RecordPtr lists.
2025-11-07 14:56:05 -06:00
Evil Eye
baefea94e8 Capture this explicitly 2025-11-05 22:09:23 +01:00
AnyOldName3
0a9f5a3c66 Resolve merge conflicts from !4938 and !4956 2025-11-02 18:05:38 +00:00
elsid
e4b28ebdce
Fix clang-tidy checks
Placing .clang-tidy into build/ folder hides some checks defined in the
root file. Place them into more specific folders to not check generated
files.
2025-11-02 18:40:02 +01:00
Andrzej Głuszak
c4b28a39c3 Lua: Return nil instead of empty strings for optional RefId fields
Implement sol_lua_push for ESM::RefId to automatically convert empty
RefIds to nil in Lua. This fixes cell.region and cell.worldSpaceId
returning empty strings, and applies the same pattern consistently
across all Lua bindings.

Removes LuaUtil::serializeRefId as it's no longer needed.

Fixes #8718
2025-11-02 05:08:25 +03:00
Evil Eye
4f8b418c23 Ensure LuaUtil::call is invoked from a safe context 2025-10-30 22:24:53 +01:00
Alexei Kotov
fea807821d Don't link to stub Boost.System library (#8754) 2025-10-26 05:16:26 +03:00
Evil Eye
a665980d5e Erase the widget we want to attach rather than the widget we're attaching to 2025-10-23 17:23:37 +02:00
Evil Eye
cc10352def Address comments 2025-10-22 17:27:51 +02:00
Alexei Kotov
ce4606705f Merge branch 'permanentlyinvalid' into 'master'
Remove invalid permanent effects

Closes #8737

See merge request OpenMW/openmw!4950
2025-10-19 00:21:01 +03:00
Alexei Kotov
1f839d264d Merge branch 'fix_qt_build' into 'master'
Do not implicitly convert QByteArray to const char*

See merge request OpenMW/openmw!4941
2025-10-18 18:41:24 +03:00
Alexei Kotov
b7ddc8304b Cleverer filesystem path conversion for QString/QStringView 2025-10-18 13:28:30 +03:00
Evil Eye
b9096410c3 Partially revert 91b1346761 2025-10-17 17:24:19 +02:00
Evil Eye
5242610366 Differentiate between invalid and unapplied effects and stop marking unapplied revertable effects as applied in godmode 2025-10-14 21:26:06 +02:00
Alexei Kotov
c75aed5175 Merge branch 'solidlyrooted' into 'master'
Don't break LuaUi::Element's invariant

Closes #8720

See merge request OpenMW/openmw!4930
2025-10-11 11:59:17 +03:00
Alexei Kotov
afe4edc3c3 Merge branch 'fix_bsatool_afl_findings' into 'master'
Fix AFL findings in bsatool

See merge request OpenMW/openmw!4925
2025-10-11 08:57:48 +03:00
elsid
16abb436e2
Fix potential overflows on reading BSA header 2025-10-06 00:03:12 +02:00
elsid
c87cc643d1
Add tests for BSAFile 2025-10-06 00:02:32 +02:00
elsid
d7f6d7c13c
Add unit tests for CompressedBSAFile 2025-10-06 00:02:32 +02:00
elsid
a111391992
Check for failures after reading from stream in BSA 2025-10-06 00:02:32 +02:00
elsid
801224749f
Handle errors when computing stream size for BSA 2025-10-06 00:02:32 +02:00