1
0
Fork 0
Commit graph

4481 commits

Author SHA1 Message Date
krcroft
c776239c3c Switch from static to dynamically-linked libstdc++
When using C++11 code that can possibly throw exceptions (such as
std::make_shared(...) linking libstdc++.a using Clang on MSYS2
will generate errors such as:

  libstdc++.a(eh_personality.o): duplicate section
  `.rdata$_ZTSSt9exception[_ZTSSt9exception]' has different size

Although potential suggested fixes involve allowing duplicate symbols,
-Wl,--allow-multiple-definition, this solution can introduce unexpected
behavior when one symbol clobbers another symbol.

To solve this, switching to dynamic linking of the libstdc++ library
appears to be all that's needed.
2020-01-07 19:46:32 +01:00
krcroft
cc7d6b6e43 Fix double-free in destructor of CDROM_Interface_Image
Unmounting single binary-file CDROM images would result in a
crash as flagged by @dreamer_ in issue #112, who noted that
multiple tracks point to the same TrackFile (track.file field).

During destruction, the pre-C++11 code used a temporary
`TrackFile* last` variable to store the currently deleted
track.file's value and only delete the next track.file if it's
not equal to `last`. The result of this is that only the
first-encountered track.file was deleted and all subsequent
and back-to-back duplicate track.file values were left as-is.

This commit replaces the Track object's 'file' member pointer
with a shared_ptr, which effectively does the same thing by
only deleting the last reference.

The shared_ptr simplifies some error-cases where we previously
had to delete the Track.file allocation, but can now simply
let the Track object go out-of-scope and let the shared_ptr
delete it's managed object (if it has one).
2020-01-07 19:46:32 +01:00
krcroft
a852fe3eab Make MD docs comply with markdownlint 2020-01-07 19:28:12 +01:00
krcroft
312a763509 Verify Markdown documents in linting workflow
Also re-order to perform shellcheck first because it
requires the least installation work compared to pylint
and markdownlint.  The reason being if we're going to fail
during shellcheck, then we fail faster (and leave heavier
tasks for further down the line).
2020-01-07 19:28:12 +01:00
Patryk Obara
343b9babca Merge branch 'svn/trunk' r4305 2020-01-07 11:29:39 +01:00
Peter Veenstra
b59d73f5b7 Log detected extensions and correct spacing.
Imported-from: https://svn.code.sf.net/p/dosbox/code-0/dosbox/trunk@4305
2020-01-05 19:10:32 +00:00
Peter Veenstra
114c820454 Force a flush, so the last data is there incase of a hard crash.
Imported-from: https://svn.code.sf.net/p/dosbox/code-0/dosbox/trunk@4304
2020-01-05 19:04:23 +00:00
Patryk Obara
fa48273663 Merge branch 'svn/trunk' r4303 2020-01-05 19:11:15 +01:00
Peter Veenstra
c5ad973795 Disable scaling by the OS on windows (scale != 100%). Could not get this working through the manifest, but this seems to work as well.
Imported-from: https://svn.code.sf.net/p/dosbox/code-0/dosbox/trunk@4303
2020-01-05 16:48:41 +00:00
Patryk Obara
2159cb9aec Use correct type for printf field size specifier
Formatting options for printf family of functions use int as a type
for formatting a field size.
2020-01-04 08:26:22 +01:00
Patryk Obara
c4dba16740 Move drives.h to common include dir
Judging by the usage, this header belongs in there instead of being
limited to dos module only.  This change makes it easier to reuse code
for new features related to drives mounting/unmounting.
2020-01-04 08:26:22 +01:00
Patryk Obara
2694aca2b2 Fix effc++ warnings in drives.cpp 2020-01-04 08:26:22 +01:00
Patryk Obara
8da42c5983 Remove false friend declarations
The single use from friended class is in public interface. Removal of
friend designators allows Clang to pinpoint few additional unused
private fields.
2020-01-04 08:26:22 +01:00
Patryk Obara
3be0409d25 Update copyright line in several scripts
Use the exact formatting suggested in COPYING file.

This change is basically a pretext to trigger a new clean build in
order to check if Coverity is capable of accepting new builds for
analysis finally.
2020-01-03 17:15:25 +01:00
krcroft
82622ffda1 Reinstate Coverity scanning 2020-01-03 16:55:22 +01:00
Patryk Obara
02414201e1 Remove unused functions in cpu area
Latest change from upstream made removed last usage of these functions.

Only ifdef-out them, in case future versions in upstream will use these
functions again.
2019-12-29 22:43:07 +01:00
Patryk Obara
f2601b274f Merge branch 'svn/trunk' r4302 2019-12-29 22:33:33 +01:00
Peter Veenstra
19b9bde38a Fix xcmpchg in dyn_x86 core. Allows Quickview to work in that core; reported by krcroft. Fixed/patch by jmarsh. Thanks!
Imported-from: https://svn.code.sf.net/p/dosbox/code-0/dosbox/trunk@4302
2019-12-29 19:53:09 +00:00
Patryk Obara
0506aaf436 Stop silencing disabled C4786 MSVC warning
This is old, and disabled by default in new MSVC compilers.
It was purely infomational warning:

"object name was truncated to 'number' characters in the debug
information"

Regardless, even if we'll decide to silence it again for any reason,
then it should be configured in VS project and not using ifdefed
pragma in the code.
2019-12-29 20:04:39 +01:00
Patryk Obara
475e315943 Stop silencing 'throw' warnings in MSVC
Warning C4290 informs users, that MSVC ignores throw specification. This
is very good warning, because 'throw' specifications were faulty design
and got deprecated in C++11 and REMOVED from the language in C++20.

Throw specifications were replaced by much better 'noexcept' keyword,
which allows for compile-time checks, unlike 'throw', which might
silently inject exception 'std::unexpected'.
2019-12-29 20:04:39 +01:00
Patryk Obara
bbf4e80ac1 Stop silencing deprecation warnings in MSVC
Warning C4996 informs users about deprecation, using either MSVC
__declspec(deprecated) modifier, or the C++14 [[deprecated]]
attribute.
2019-12-29 20:04:39 +01:00
Patryk Obara
aff02450d1 Move GCC_ATTRIBUTE out of autoconf 2019-12-29 20:04:39 +01:00
Patryk Obara
670654fc7b Remove unnecessary check for XKBlib.h 2019-12-29 20:04:39 +01:00
Patryk Obara
3b157cd785 Add missing headers to autoconfig file
Also sort list of headers, so it's easier to assure no files are
missing.
2019-12-29 20:04:39 +01:00
Patryk Obara
ff2968df3f Move 'likely' macros to the compiler support header
This makes it easier to move away from autoconfig in the future.

Also, use '!!' C trick to prevent accidental incorrect usage of
these macros.
2019-12-29 20:04:39 +01:00
Patryk Obara
cac7ba136c Update allowed warnings limits 2019-12-29 08:12:28 +01:00
Patryk Obara
6cd5f84466 Silence switch warnings for int10 scanline 2019-12-29 08:12:28 +01:00
Patryk Obara
494eee2ea7 Silence format warning 2019-12-29 08:12:28 +01:00
Patryk Obara
bdac00740b Disable unused function in adlib 2019-12-29 08:12:28 +01:00
Patryk Obara
6ed2396a2e Print a newline after 'path' command 2019-12-29 08:12:28 +01:00
Patryk Obara
5c1c653098 Print a newline after user makes a choice
Previously, this command expected newline to be injected by the shell
(which was incorrect behaviour, as shell was skipping it in batch
files).
2019-12-29 08:12:28 +01:00
Patryk Obara
1bdb67b2c3 Add an assert in 'choice' command
Static analyzer indicates that in this context `rem` can be NULL,
therefore should not be passed to strchr, but in this context `rem`
cannot be NULL becasuse `args` is not NULL (even after StripSpaces).
2019-12-29 08:12:28 +01:00
krcroft
a16543d2ee Add -framework CoreFoundation, which CoreMIDI depends on 2019-12-27 07:41:12 +01:00
Patryk Obara
d726f59d83 Hide SoundBlaster autoexec line 2019-12-27 07:34:48 +01:00
Patryk Obara
bb2088eb72 Fix a number of effc++ warnings in shell code 2019-12-27 07:34:48 +01:00
Patryk Obara
08a7f47c2b Fix output of 'dir /w /p' and edge cases
Previous implementation avoided invocation of 'pause' in many edge
cases, e.g.: when pause should be invoked between summary lines.

Avoid displaying '.' and '..' in root directory of mounted drive (just
like other dir implementations do).

Use C++11 for-each loop for iterating over directory entries.

Split code inside the loop by option, resulting in more readable
implementation.

Use "%*s" to inject empty whitespace of calculated size instead of
outputting spaces in a loop.

Leave some TODO notes describing further improvements.
2019-12-27 07:34:48 +01:00
Patryk Obara
64949a6e8c Print volume/drive label in 'dir' cmd
This is in line with any other implementation of 'dir' command. It's
also very useful for identifying e.g. which floppy is currently mounted.

MS-DOS and cmd.exe display Volume Serial Number, but it emulating it in
DOSBox doesn't seem to be very useful.
2019-12-27 07:34:48 +01:00
Patryk Obara
c3e7997f75 Fix conversion warnings after SDL2 transition
Detected by MSVC compiler; several warnings:
"(…) conversion from 'Sint64' to '<type>', possible loss of data"
2019-12-26 03:23:19 +01:00
Patryk Obara
dc0d174824 Remove unused macro definitions 2019-12-26 03:23:19 +01:00
Patryk Obara
9bca78bc77 Remove note about additional dependencies. 2019-12-26 03:23:19 +01:00
Patryk Obara
a7280cf1f7 Query SDL for available texture renderers
There's no point in hardcoding these values - they can be different to
every user (it depends on hardware, OS, SDL version, etc).

Also, future versions of SDL might introduce more renderers, so this way
the code is more future-proof.
2019-12-26 03:23:19 +01:00
Patryk Obara
6ce7ff8b58 Change sdl.renderer to sdl.texture_renderer
Otherwise users might easily miss, that this option is supposed to work
only for 'texture' output.

Also, do slight adjustments to formatting in generated .conf file.
2019-12-26 03:23:19 +01:00
Patryk Obara
cb82a60341 Surround WIN32_LEAN_AND_MEAN with ifndef
Otherwise it redefines macro definition in SDL_opengl.h.
2019-12-26 03:23:19 +01:00
Patryk Obara
3a68ba2b26 Indicate system includes for relevant SDL headers 2019-12-26 03:23:19 +01:00
Patryk Obara
ce7c27a48b Remove irrelevant ifdefs from unifdef-all script
OS/2 and DirectDraw support were removed during upgrade to SDL2.
2019-12-26 03:23:19 +01:00
Patryk Obara
3748ae569a Update note about CD-DA support 2019-12-26 03:23:19 +01:00
Patryk Obara
9d04beaea4 Update allowed warnings limits 2019-12-26 03:23:19 +01:00
Patryk Obara
015f1087b0 Remove reference to SDL 1.2 Caps Lock hack 2019-12-26 03:23:19 +01:00
Patryk Obara
f89f87ced5 Fix large number of effc++ warnings in sdl_mapper 2019-12-26 03:23:19 +01:00
Patryk Obara
6a0d712404 Re-enable screenshots feature for snapshot builds
With SDL2 in place, the silent dependency on libpng12 on Ubuntu 16.04 is
now gone. Unfortunately, development packages for libpng16 are named
differently for Ubuntu 16.04 and 18.04, so we can't add new package to
the global list.
2019-12-26 03:23:19 +01:00