Commit Graph

122 Commits (5e14a20b3b6be26aa4e6e0a35316eb8f8950a1b8)

Author SHA1 Message Date
Loïc Guilloux ccd586a736
Fix #9588, 140a96b: [Squirrel] Reaching memory limit during script registration could prevent further script detections (#9589)
Also the memory allocation triggering the limit was never freed.
And if the exception was thrown in a constructor using placement new, the pre-allocated memory was not freed either.
3 years ago
Rubidium 281a65b3e1 Cleanup: simplify some boolean expressions 3 years ago
Rubidium a9774f3e34 Cleanup: [Squirrel] Use nullptr instead of 0 or NULL 3 years ago
rubidium42 c811d42d0c Fix a99ac62: fmt's include of cassert breaks our assert logic 3 years ago
rubidium42 662d8dfc30 Add: minimal set of headers from {fmt} 7.1.3 to 3rdparty 3 years ago
glx22 00e3fddd0c Fix: [MinGW] Unused squirrel code triggering a warning 3 years ago
Patric Stout 28e90769f7 Codechange: use "[[maybe_unused]]" instead of a wide variety of other ways we had
While at it, replace OTTD_ASSERT with WITH_ASSERT, as this
is always set if assert() is valid. No matter if NDEBUG is set
or not.
3 years ago
Rubidium 5c01f9ea52 Fix #9267, 47a99bb: [Squirrel] Heap use after free
Due to 47a99bb the order of elements in the garbage collection chain has
changed causing the class to be finalised before the instances of that class.
Since the instance's array of member values depends on the size of the values
in the class, the class finalisation resetting that size to 0 causes not all
finalisations to run, which subsequently causes a heap use after free. So,
just set the SQObjectPtrs to 'null' during the finalisation of the SQClass
so the SQInstance can release all instance variables during its finalisation.
3 years ago
Rubidium 44d1b964bf Fix #7513: recursive array/class/table release caused stack overflow 3 years ago
Rubidium 47a99bb676 Fix #7513: recursive garbage collection caused stack overflow 3 years ago
Charles Pigott dd798d688b
Fix #8919: Release builds with asserts enabled (#8925) 3 years ago
Charles Pigott 591ea9862d
Codechange: Suppress warnings when asserts are disabled (#8916) 3 years ago
Michael Lutz 9a069faa01 Codechange: [Win32] Try to get an OpenGL 3.2+ context if possible. 3 years ago
Michael Lutz ef478ade64 Add: [Win32] Video driver that uses OpenGL to transfer the video buffer to the screen. 3 years ago
Charles Pigott 9b800a96ed
Codechange: Remove min/max functions in favour of STL variants (#8502) 4 years ago
frosch 484ea62a62 Cleanup: use std::optional instead of custom implementation. 4 years ago
Charles Pigott 64b1c70fdd Codechange: Add WARN_FORMAT to vseprintf and fix the cascade of warnings that followed 4 years ago
Niels Martin Hansen 9895ced6af Fix: Silence some warnings when building with clang-cl on VS 2019
Clang-cl presents as both _MSC_VER and __clang__ in the preprocessor which makes some things confusing.
4 years ago
Patric Stout 56d54cf60e Add: introduce CMake for project management
CMake works on all our supported platforms, like MSVC, Mingw, GCC,
Clang, and many more. It allows for a single way of doing things,
so no longer we need shell scripts and vbs scripts to work on all
our supported platforms.

Additionally, CMake allows to generate project files for like MSVC,
KDevelop, etc.

This heavily reduces the lines of code we need to support multiple
platforms from a project perspective.

Addtiionally, this heavily improves our detection of libraries, etc.
4 years ago
Michael Lutz 8aef14386f Add: Optional implementation of std::optional for pre-C++17 compilers.
Sourced from https://github.com/akrzemi1/Optional, Boost Software License, Version 1.0.
4 years ago
glx 196157b29e Fix #7966: SQInteger is 64-bit, print it as 64-bit 4 years ago
S. D. Cloudt 13cc8a0cee Cleanup: Removed SVN headers 5 years ago
Charles Pigott 6378a78817 Codechange: Explicitly move a few variables to avoid a copy constructor (fixes warning from clang) 5 years ago
Charles Pigott 71a3e83468 Fix: GCC9's warnings about deprecated implicit assignment operators 5 years ago
Niels Martin Hansen 140a96b3a0 Change: Limit memory allocations for each Squirrel instance
This can avoid out-of-memory situations due to single scripts using up the entire address space.
Instead, scripts that go above the maximum are killed.
The maximum is default 1 GB per script, but can be configured by a setting.
5 years ago
Charles Pigott 5f86e1a390 Codechange: Silence -Wclass-memaccess warnings with GCC8 6 years ago
Niels Martin Hansen 836d25e738 Codechange: Address some MSVC compiler warnings 6 years ago
frosch 062c736437 (svn r27896) -Fix: some warnings 7 years ago
frosch b4b98e5165 (svn r27893) -Codechange: Use fallthrough attribute. (LordAro) 7 years ago
rubidium ac6312d33c (svn r27605) -Fix: GCC 6 warning about misleading indentation 8 years ago
matthijs 576005b714 (svn r27561) -Fix [Squirrel]: Fix typos in error messages 8 years ago
rubidium d05ac99d52 (svn r27289) -Fix: some uninitialised instance variables 9 years ago
rubidium 5ed8ac8a81 (svn r27233) -Fix [FS#6272]: crash when no AIs were installed due to improper handling of non-ASCII characters by the string pointer lexer 9 years ago
frosch 396dde1636 (svn r27092) -Fix/Add [FS#6186]: Compilation on OS/2 (smedles) 10 years ago
rubidium 771dcf3b7b (svn r27003) -Cleanup: fix the use of spaces and asterices "around" some comments 10 years ago
rubidium 79ca66eb67 (svn r26853) -Cleanup [Squirrel]: remove some stuff that we never did and especially never should use 10 years ago
rubidium dba98e85cb (svn r26845) -Fix [Squirrel]: more uninitialized variables in constructors 10 years ago
rubidium 6defde275c (svn r26844) -Fix: clang compile error 10 years ago
rubidium 3c85109c49 (svn r26842) -Codechange [Squirrel]: other simple cases of non-initialised instance variables 10 years ago
rubidium a1d4148be5 (svn r26841) -Codechange [Squirrel]: move the actual initialisation of instance variables of SQString into the constructor 10 years ago
rubidium 1685118169 (svn r26840) -Fix [Squirrel]: merge Init and constructor of SQSharedState 10 years ago
rubidium 22fc96ad6b (svn r26839) -Fix [Squirrel]: some dead code and making switch fall throughs more explicit 10 years ago
rubidium 0291a1be11 (svn r26838) -Fix (r26831): attempt to make MSVC like the code again 10 years ago
rubidium 74ceffd3c5 (svn r26837) -Fix [Squirrel]: remove some pointless assignments 10 years ago
rubidium 9f249cfff9 (svn r26836) -Fix [Squirrel]: merge SQLexer::Init with the constructor; there's no need to construct first and then call init in the next line 10 years ago
rubidium 0d0c4461ce (svn r26835) -Fix [Squirrel]: remove dead code from the lexer 10 years ago
rubidium 7176f65edf (svn r26834) -Fix [Squirrel]: prevent unitialized memory warning by moving code from (static) Init to constructure for SQFunctionProto 10 years ago
rubidium 12bd7532ba (svn r26833) -Fix [Squirrel]: remove a few bits of dead code 10 years ago
rubidium 5cec030d4d (svn r26832) -Fix [Squirrel]: ensure instance variable of SQNativeClosure is properly initialized 10 years ago
rubidium ff880a420d (svn r26831) -Fix [Squirrel]: (bogus) warning about falling through in a switch 10 years ago