Commit graph

25338 commits

Author SHA1 Message Date
Daniel Bertalan 347c3361ee Kernel: Fix deprecated array comparison
The Clang error message reads like this (`-Wdeprecated-array-compare`):

> error: comparison between two arrays is deprecated; to compare
> array addresses, use unary '+' to decay operands to pointers.
2021-08-08 10:55:36 +02:00
Daniel Bertalan 9265f24816 LibCoreDump: Make narrowing uint64_t => FlatPtr conversion explicit
This fixes a build issue on Clang which returns an error if narrowing is
performed in a list-initialization.
2021-08-08 10:55:36 +02:00
Daniel Bertalan 5f2f460cc8 Tests: Add Clang pragma for turning off optimizations
Clang does not accept `GCC optimize("O0")`, so it fails to build the
system with it.
2021-08-08 10:55:36 +02:00
Daniel Bertalan 7fb41d6250 WindowServer: Fix 'use of GNU old-style field designator'
Since C99 and C++20 have a standardized syntax for designated
initializer, we should use that instead of this GCC-specific extension.
While this currently works both in Clang and GCC, the former emits a
warning for it, while the latter has an [issue] open that plans to
deprecate it.

[issue]: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88144
2021-08-08 10:55:36 +02:00
Daniel Bertalan db840aaacd LibGUI: Add break even before empty default label
Clang is a bit more pedantic than GCC when diagnosing implicit
fallthroughs, and doesn't care if the succeeding label only contains a
single break statement.
2021-08-08 10:55:36 +02:00
hstde 7d22713a72 Terminal: Save settings to config file
When exiting the terminal settings window, the opacity, bell and
maximum history size will be saved to the application config file.
Because the color scheme is neither configurable nor
will it be loaded on startup, it will not get saved for now.
2021-08-08 10:53:57 +02:00
Gunnar Beutner 2fec891d8e Meta: Allow attaching GDB to the QEMU instance on the WSL2 host 2021-08-08 01:46:41 +02:00
Gunnar Beutner 45f2e9f3cf Meta: Don't use x86_64 QEMU for the i686 kernel
This seemed like a good idea at the time to avoid an unnecessary
dependency on qemu-system-i386. However this makes debugging the
kernel with GDB more difficult because GDB assumes that the QEMU
architectures matches the kernel architecture.
2021-08-08 01:46:41 +02:00
sin-ack ba768eb872 LibGUI: TreeView tree column text painting adjustments
The text was painted with the assumption that no other column would be
present after the tree column, which won't always be true. Additionally,
some alignment and focus rect-related issues have been fixed.
2021-08-08 01:41:23 +02:00
Andreas Kling beda2161d4 Meta: Add Tobias Christiansen to the contributors list :^) 2021-08-08 00:50:06 +02:00
Andreas Kling 2ff3c54153 Kernel: Remove unnecessary churn in ConsoleManagement
The maximum number of virtual consoles is determined at compile time,
so we can pre-allocate that many slots, dodging some heap allocations.

Furthermore, virtual consoles are never destroyed, so it's fine to
simply store a raw pointer to the currently active one.
2021-08-08 00:44:25 +02:00
TheFightingCatfish 652fa54495 Browser+LibWeb: Silence some debug spams 2021-08-08 00:33:14 +02:00
TheFightingCatfish e80b887059 Browser+LibWeb: Make sure the default favicon is loaded
Previously in Browser, when we navigate back from a page that has an
icon to a page that does not have an icon, the icon does not update and
the old icon is displayed because FrameLoader does not set the default
favicon when the favicon cannot be loaded. This patch ensures that
Browser receives a new icon bitmap every time a load takes place.
2021-08-08 00:33:14 +02:00
Tobias Christiansen 4f5c69a04c PixelPaint: Add snapping to the GuideTool
When holding Shift, the Guide snaps to a multiple of the specified
number from the properties widget.
2021-08-08 00:30:41 +02:00
Tobias Christiansen 58cb668257 PixelPaint: Add tooltip to GuideTool to show current offset
The offset of the currently edited Guide is shown in a tooltip when
using the GuideTool.
2021-08-08 00:30:41 +02:00
Tobias Christiansen d46c3896c6 LibGUI: Add show_tooltip_immediately()
This allows an application to display a tooltip without waiting for a
timer to fire first.
2021-08-08 00:30:41 +02:00
Andreas Kling 552dd7abd3 Kernel: Port BlockBasedFileSystem to ProtectedValue :^) 2021-08-08 00:28:10 +02:00
Andreas Kling e2bfdd74bc Kernel: Remove unused mutex PATADiskDevice::m_lock 2021-08-08 00:08:24 +02:00
Andreas Kling 84656788bf Userland: Use kmalloc_array() where appropriate 2021-08-08 00:03:45 +02:00
Andreas Kling 3609ac4cf9 AK: Use kmalloc_array() where appropriate 2021-08-08 00:03:45 +02:00
Andreas Kling 2189524cb3 AK: Add kmalloc_array() to trap multiplication overflows
This pattern is no good:

    kmalloc(elements * sizeof(T));

Since it silently swallows any multiplication overflow.
This patch adds a simple kmalloc_array() that stops the program if
overflow occurs:

    kmalloc_array(elements, sizeof(T));
2021-08-08 00:03:45 +02:00
Andreas Kling c94c15d45c Everywhere: Replace AK::Singleton => Singleton 2021-08-08 00:03:45 +02:00
Andreas Kling eb60cb156d AK: Bring Singleton into the global namespace with using 2021-08-08 00:03:45 +02:00
Andreas Kling 15d033b486 Kernel: Remove unused Process pointer in Memory::AddressSpace
Nobody was using the back-pointer to the process, so let's lose it.
2021-08-08 00:03:45 +02:00
Andreas Kling 2362ebf483 Build: Add -fsized-deallocation to global CXXFLAGS
This is enabled by default for GCC (>=C++14) but apparently not for
Clang, which has been causing CLion to get confused about kernel code.
2021-08-08 00:03:45 +02:00
Itamar 9da9398bf0 LibCpp: Do macro substitution in the preprocessor instead of the parser
After this change, the parser is completely separated from preprocessor
concepts.
2021-08-07 21:24:11 +02:00
Itamar 0c4dc00f01 LibCpp: Import definitions from headers while processing
When the preprocessor encounters an #include statement it now adds
the preprocessor definitions that exist in the included header to its
own set of definitions.

We previously only aggregated the definitions from headers after
processing the source, which was less correct. (For example, there
could be an #ifdef that depends on a definition from another header).
2021-08-07 21:24:11 +02:00
Itamar 4673a517f6 LibCpp: Do lexing in the Preprocessor
We now call Preprocessor::process_and_lex() and pass the result to the
parser.

Doing the lexing in the preprocessor will allow us to maintain the
original position information of tokens after substituting definitions.
2021-08-07 21:24:11 +02:00
Itamar bf7262681e LibCpp: Support initializing the lexer with a "start line" 2021-08-07 21:24:11 +02:00
Andreas Kling 5fda8a6c36 LibGUI: Don't assume GUI::Icon has 16x16 bitmap in AbstractTableView
An empty GUI::Icon would cause the column auto-sizing logic to crash.
2021-08-07 21:11:04 +02:00
Andreas Kling 0cb6c3c831 Kernel/TCP: Port TCP retransmit queue to ProtectedValue
I had to switch to exclusive locking since ProtectedValue rightly
doesn't allow you to mutate protected data with only a shared lock.
2021-08-07 18:49:27 +02:00
Andreas Kling 4c582b57e9 Kernel: Port PTYMultiplexer to ProtectedValue 2021-08-07 18:49:27 +02:00
Andreas Kling 7f2791f02e Kernel: Increase maximum PTY count from 8 to 64
Let's allow users to allocate more pseudo-terminals if they want.
2021-08-07 18:49:27 +02:00
Andrew Kaster c4604bc080 CI: Don't build libjs for Lagom twice
We need test-js for the parser tests for test262, but we don't need to
rebuild all of Lagom twice. This was missed when we did the initial
change to shared libraries. Before #9017, the Lagom build for test-js
is what built libLagom.a for the libjs-test262-runner to link against.

Now that we are building libjs.so and its dependencies in the runner's
build directory, we should build test-js there as well.

Requires linusg/libjs-test262#32 in order to properly find the built
test-js.
2021-08-07 16:34:06 +01:00
thisSyntaxSucksAndYouKnowIt f583cddaf7 Solitaire: Don't allow the player to draw cards while mouse is down 2021-08-07 16:59:46 +02:00
Linus Groh 81784afbe1 Ports: Fix Python's expected SHA256 sum
Fixes #9265.
2021-08-07 15:10:50 +01:00
Andrew Kaster 891bc81f30 Meta: Remove syslog.h from clang-format exclusion list
Before Libraries was moved to Userland/Libraries syslog.h had a bunch
of manually aligned defines and array initializations.

Andreas seems to have formatted the file with clang-format as part of
that file move. Since syslog.h is now properly formatted, we don't
need to exclude it from the linter list.
2021-08-07 15:36:51 +02:00
Idan Horowitz e548c1f489 CI: Cache UnicodeData files on the self-hosted test262 runner
We already cache these files to prevent re-downloading them in the other
CI workflows, so this just brings the test262 runner up to speed with
the rest of them.
2021-08-07 15:30:47 +02:00
Idan Horowitz 9d21c79671 Kernel: Disable big process lock for sys$sync
This syscall doesn't touch any intra-process shared resources and only
calls VirtualFileSystem::sync, which is self-locking.
2021-08-07 15:30:26 +02:00
sin-ack 0d468f2282 Kernel: Implement a ISO 9660 filesystem reader :^)
This commit implements the ISO 9660 filesystem as specified in ECMA 119.
Currently, it only supports the base specification and Joliet or Rock
Ridge support is not present. The filesystem will normalize all
filenames to be lowercase (same as Linux).

The filesystem can be mounted directly from a file. Loop devices are
currently not supported by SerenityOS.

Special thanks to Lubrsi for testing on real hardware and providing
profiling help.

Co-Authored-By: Luke <luke.wilde@live.co.uk>
2021-08-07 15:21:58 +02:00
sin-ack a2a553b286 AK: Add RecursionDecision
Similar to IterationDecision, this can be returned from callbacks passed
to recursive traversal functions to signal how to proceed.
2021-08-07 15:21:58 +02:00
Tobias Christiansen 833936f3ec LibWeb: Add auto as a recognized argument of flex-basis
There isn't actually any special treatment of this over 'content' in
the FlexFormattingContext, for now both are treated the same.
This fixes #9225
2021-08-07 15:21:34 +02:00
Linus Groh 6852ba4d34 LibJS: Implement Temporal.Instant.prototype.subtract() 2021-08-07 13:10:35 +01:00
Linus Groh b38f1fb071 LibJS: Implement Temporal.Instant.prototype.add() 2021-08-07 13:10:35 +01:00
Linus Groh 8ffad70504 LibJS: Add missing spec link to Temporal.Instant.prototype.round() 2021-08-07 13:10:35 +01:00
Andreas Kling b197fc40a7 Kernel: Port process thread lists to SpinLockProtectedValue
I had to move the thread list out of the protected base area of Process
so that it could live with its lock (which needs to be mutable).
Ideally it would live in the protected area, so maybe we can figure out
a way to do that later.
2021-08-07 13:46:16 +02:00
Andreas Kling d6667e4cb8 Kernel: Port process groups to SpinLockProtectedValue 2021-08-07 13:30:59 +02:00
Linus Groh 6762378f89 LibJS/Tests: Add length test for Temporal.Instant.prototype.round() 2021-08-07 12:10:34 +01:00
Linus Groh cdb0c879d3 LibJS/Tests: Add length test for Temporal.Instant.prototype.equals() 2021-08-07 12:10:34 +01:00
Linus Groh a8ba2f4b21 LibJS/Tests: Fix bad copy and paste that crept into a lot of tests
The top-level function should have been `describe()``, but instead it's
been nested `test()`s.
2021-08-07 12:10:34 +01:00