Previously, the buttons would be cropped (by the border thickness) as
the border is not shown on maximized windows. This patch adjusts the
button positions to correct for that.
If you run `serenity.sh run` with missing fuse2fs and/or fusermount3,
then install the needed packages, and then try to run the script
again, rmdir step will fail with "non-empty directory" error
causing QEMU to not start. The patch avoids this by recursively
removing disk mount directory instead of just unlinking it.
atan() isn't implemented yet on non-x86, so this isn't super useful yet.
But it does handle a couple corner cases correctly already, and those
are even enough to make all the atan2 tests in Tests/LibC/TestMath.cpp
pass 🙃
With this, sin() and cos() are fairly close to the correct values
for all x. It's neither fast nor very accurate, but much better than
what we had before.
Now that we have fmod(), we can implement some symmetries for
sin() and cos(). The core approximation is still very simplistic,
but now it only has to approximate in [0, Pi/2]. So while its error
is still high, it's no longer unbounded.
`handle_crash` already calls `dump_registers`, so there is no need for
the AArch64 exception handler to do it as well.
The second register dump (the one made by `handle_crash`) previously
also often reported an incorrect ESR_EL1 value, as interrupts are
enabled at that point in time.
This problem can simply be solved by saving the ESR_EL1 value in the
`RegisterState`, similar to how we save `scause` on RISC-V.
The initial value we used for SCLTR_EL1 would allow EL0 to do things it
shouldn't be allowed to, like disabling interrupts.
Setting that register to more permissive values and overriding it later
shouldn't cause any problems, but it's still less confusing this way.
These mounts are the base set of mounts we need for a fully functional
system. The bind mounts are also there for protection from malicious
software or accidental overwrite/deletion of files.
Therefore, marking these mounts as immutable makes sense, because they
should not be changed during runtime anyway.
Immutable mounts are mounts that can't be changed in any aspect, if the
VFSRootContext that hold them is used by a process. This includes two
operations on a mount:
1. Trying to remove the mount from the mount table.
2. Trying to change the flags of the mount.
The condition of a VFSRootContext being held by a process or not is
crucial, as the intention is to allow removal of mounts that marked as
immutable if the VFSRootContext is not being used anymore (for example,
if the container that was created with such context stopped).
Marking mounts as immutable on the first VFS root context essentially
ensures they will never be modified because there will be a process
using that context (which is the "main" VFS root context in the system
runtime).
It should be noted that setting a mount as immutable can be done in
creation time of the mount by passing the MS_IMMUTABLE flag, or by doing
a remount with MS_IMMUTABLE flag.
This is a pretty naive implementation of exp2() that can be improved
a lot, but hey, it beats the sin() and cos() implementation on non-x86.
It also implements exp(x) as exp2(x * log2(e)), with the same
disclaimer.
Linking liblagom-web.so produces a ~132K long command line. Ninja
passes the whole command line as a single arg to `sh -c <arg>`,
and the limit for single arguments (`MAX_ARG_STRLEN`) on Linux
is `PAGE_SIZE * 32` == 128K.
A response file passes the list of files in a file on disk, which
lets us sidestep this problem. Ninja writes response files before
invoking commands, and deletes them after (unless `-d keeprsp` is
passed to ninja, then it keeps them on disk).
start_loading_next_url() is a no-op if there's a pending resource load,
but not if that resource load has successfully loaded already. There is
a delay between the font resource loading, and it being processed into
a vector font. Calling font_with_point_size() in that gap would
previously erase the previously-loaded font, if the font had multiple
URLs to choose from.
This fixes the icon font on mods.factorio.com :^)
(cherry picked from commit 28388f1fd24c0019d2c4be7900584c6c536527ad)
In particular, if given a value of -2147483648, we would invoke signed
integer overflow (which is UB).
(cherry picked from commit edd3b14ddf049048e5d6bd952677133237adb652)
This test checks the case, where an unknown pseudo element is used as
second argument to getComputedStyle
(cherry picked from commit 540c840755755844c84b0b9f41c50d2e835486fe)
There are some special values for CSS::Selector::PseudoElement::Type
which are after `KnownPseudoElementCount` and therefore not present in
various arrays of pseudo elements, this leads to some errors, if a type
after `KnownPseudoElementCount` is used without checking first. This
adds explicit checks to all usages
(cherry picked from commit d21bfda9001efd1f2303dc86af6c1f0a2d7da182)
The function AnimationEffect::phase() contained duplicated condition
checks for the animation phase determination. This refactor eliminates
the redundant checks by simplifying the logic.
(cherry picked from commit 108701c8997e8484890adee8dbf1d4cb81a51c39)
Even though calling delete on a super property will ultimately throw a
ReferenceError, we must return the allocated register for the result of
the delete operation (which would normally be a boolean). If the delete
operation is used in a return statement, the bytecode generator for the
return statement must be able to assume the statement had some output.
(cherry picked from commit 5947c37637f8ea3d4c323a04e5e5dfe9fad5a4d7)
Speeds up the append_gc_graph function by preallocating space.
This change reduces the time taken to dump the GC graph by 4%
on about:blank.
(cherry picked from commit 03ac6e6e87488fdc638cd3a84b2c59890bdba3cc)
This defers accessing TA internal slots until we know we have a valid,
attached TA. Our implementation has assertions that guard against this.
(cherry picked from commit 962441b3cf34c1350877ac7c73351657c10f675b)
Tests with different combinations of missing width, height
and viewBox.
All tests confirmed to work on Ladybird:
- exactly the same as Chromium (131.0.6778.85)
- almost the same as Firefox (129.0.2)
- only difference: standalone-w.svg: same size, different alignment
(cherry picked from commit 5d85f3a5c8c7fa5631ca5ece3f1ed95c68e480c4)
SVG document with specified width and height attributes is layed out
with this width/height.
(cherry picked from commit 5d77104c2f214f0a78d936c014cea21335083eaf)