There's no reason to use more than 32 bit for this parameter.
Also, limit scope of certain variables as much as possible without
bigger refactorizations.
There's no reason to use more than 32 bit for this parameter; source
values are 16 bit, and they occassionally shifted, but always to values
fitting in 32 bit.
Coverity detects possible division by zero in calculation of spkr.min_tr
few lines below; this is a false-positive issue detected by Coverity,
but only bacause int value passed by user has a set of pre-determined
values. We can as well make sure that value is never going to be
smaller than the minimum allowed.
This buffer overrun could happen if implementer forgets to fill pointer
svga.set_clock, but calls VGA_SetClock with index out of bounds.
Placing assert in here should clear out false positives detected by
Coverity.
Unlike an array of 1-byte chars which only requires 1-byte
alignment (because the array's largest element is only one byte),
when we fool the compiler into allocating a _TCPsocketX as an arra
of chars, we similarly tell the compiler we only need 1-byte
alignment. But this requirement changes when we cast the 1-byte array
back to the _TCPsocketX and try to operate on members having sizes
larger than 1-byte (such as int32's); we now require 4-byte
alignment (after allocation).
This typedef originates from SDL_net.h, it's an opaque data type used
for TCP connections.
It's a pointer, therefore prevent copying and assignment in
TCPServerSocket to prevent ownership problems.
Reuse SendArray implementation instead of repeating the same code
pattern several times.
This change started as a removal of warning about comparison of
integer expressions of different signedness: ‘int’ and ‘Bitu’
(when comparing return value of SDLNet_TCP_Send), but turned into
a small cleanup and removal of dead code.
When running BBS DOSBox's softmodem does not correctly handle
escape characters properly nor does it properly transition
to command mode:
Characters are swallowed instead of passed-through, this causes
issue when transmitting strings with the plus character.
Additional characters before and after the escape sequence don't
reset the counters causing switch to command mode even if not
intended. For example, connect to a remote and type a+++ it
switches to command mode, it should not. The attached proposed
patch fixes the escape handling:
Transmission pause is checked before and after the escape
sequence, so <pause>+++<pause> is the correct
sequence.</pause></pause> Extra characters cause the counters to
be reset so no unwanted switch is triggered. Use register S12 to
set the pause timer in 1/50th of seconds, default is 50 = 1 sec.
Plus characters are passed to the remote. With this fix I'm able
to run a BBS software and do file transfers with XModem and ZModem
without problems.
Imported-from: https://sourceforge.net/p/dosbox/patches/287/
The 'ptr' pointer in the 'ptr += sizeof (FM_OPL)' expression could be nullptr. In such case,
resulting value will be senseless and it should not be used.
This removes the last warnings in this area; in this case changing endianess
is not used for accessing emulated memory, just to flip few values to
low endian for storage.
This massive patch is based on work of NY00123, which was published on
Vogons forum in 2013 and was waiting for inclusion in SVN since then:
https://www.vogons.org/viewtopic.php?f=41&t=34770
Revision from December 2018 was used to kickstart this work. However, a
number of changes were implemented:
- Original patch preserves all SDL 1.2 code by ifdefing it; this patch
completely removes all code ifdefed for several versions of SDL 1.2.*
This way the code will be easier to maintain going forward and
features enabled by SDL 2.0 do not need to be backported.
A side-effect of this change is almost-complete removal of DirectDraw
support - but users can now use Direct3D based acceleration (without
any ifdefs in code).
- Code ifdefed for Android was removed to make the project easier to
understand and modify. Android port should still be possible, but it
requires more work (mostly CI and buildsystem work).
Android-related functionalities that were cross-platform were
preserved.
- Code ifdefed for OpenGL ES (which was only used for Android) was
removed - this should not affect Android support, as
hardware-accelerated 2D should still be viable via "texture" output,
but it was not tested, as buildsystem does not support Android ATM.
- SDL_cdrom code is not included; it was outside of scope of SDL2
changes. Inclusion of that library did not justify supporting one
small usecase (playblack of CD audio from physical CDs).
- Few code warning were fixed (but new sdl_mapper implementation
introduces many, many new warnings).
- Some formatting changes were implemented.
Overall, the original patch had ~40k lines of code - here it was
trimmed to +769,-972 (so more old code got removed than new code added).
This implementation was extensively tested on Linux and somewhat tested
on Windows 10. It fixes numerous issues (too many too list).
Testing found two small regressions:
- Starting game in fullscreen makes it impossible to switch back to
windowed mode correctly (Windows 10)
- Scaling works a bit worse, only in text mode, only in window (Linux)
This implementation introduces revised user settings in sdl section - it
is only partly compatible with settings from SDL 1.2; this is an issue,
but it will need to be addressed in a separete commit.