Age | Commit message (Collapse) | Author |
|
This file has been moved from DOM/ to HTML/ in
a784090b91139776b26fbac2a8426de3abdea308.
|
|
Code is pretty trivial. If someone needs "float" support, a copy-paste
will be in place.
Build system was confused between math.h from rootfs, and toolchain. I
fixed the problem caused by `math.h` by locally using the builtin
`isnan()` from the compiler. It's ugly - but works. I am looking for
other alternatives.
|
|
This patch makes images have an implicit zero intrinsic size before
they have either loaded or failed to load. This is tracked by the
ImageLoader object.
This fixes a long-standing issue with images occupying empty 150x150
rectangles of space.
|
|
|
|
|
|
|
|
|
|
Add a create() factory function to prevent this from happening again.
|
|
|
|
|
|
This fixes a possible UAF where the job might be destroyed in
block_on_job().
|
|
|
|
|
|
|
|
|
|
With this information, it's a bit easier to intuit the current 'process tree'.
If you're reading this, can I convince you to implement a nice process tree for
SystemMonitor? It could be via PPID (unbounded depth), or SID+PGID (depth 3).
Or something else entirely :D
|
|
This uses the new ProcFS interface at /proc/<pid>/stacks/<tid>
|
|
This breaks SystemMonitor, which the next commit fixes.
|
|
This is useful to test SystemMonitor and /proc, because all other multi-threaded
processes tend to be moving targets.
|
|
|
|
Shift-clicking has the old behavior of jumping to the click position.
This matches scrollbar behavior in macOS and Windows, and in many Linux apps.
|
|
|
|
|
|
|
|
|
|
https://github.com/SerenityOS/serenity/commit/bc7a149039538f26e10444f38db6682d5df57333#r41386045
|
|
A trace for proof:
buffer:
L91: 0:(packet.size() - header_size)
L98: (packet.size() - header_size):(packet.size() - header_size + mac_size)
L102: (packet.size() - header_size + mac_size):buffer.size()
(asserted at L103)
ct:
L88: 0:(header_size - 2)
L123: (header_size - 2):(header_size)
L111: (header_size):(header_size + iv_size)
L117: (header_size + iv_size):(header_size + iv_size + length)
(asserted at L113)
|
|
This shaves 2.5 more runtime seconds off 'disasm /bin/id', and makes the
Mode<T> interface a lot more allocation-friendly.
|
|
|
|
|
|
This is to prevent bugs like #3091 (fixed in
9810f8872c21eaf2aefff25347d957cd26f34c2d) in the future; we generally
don't want Interpreter::run() to be called if the interpreter still has
an exception stored. Sure, it could clear those itself but letting users
of the interpreter do it explicitly seems sensible.
|
|
We don't want to carry over exceptions across multiple
Document::run_javascript() calls as Interpreter::run() and every of its
exception checks will get confused - in this case there would be an
exception, but not because a certain action failed.
Real-life example:
<script>var a = {}; a.test()</script>
<script>alert("It worked!")</script>
The above HTML will invoke Document::run_javascript() twice, the first
call will result in a TypeError, which is still stored during the second
call. The interpreter will eventually call the following functions (in
order) for the alert() invocation:
- Identifier::execute()
- Interpreter::get_variable()
- Object::get() (on the global object)
That last Object::get() call has an exception check which is triggered
as we still carry around the exception from earlier - and eventually
returns an empty value.
Long story short, the second script will wrongly fail with
"ReferenceError, 'alert' is not defined".
Fixes #3091.
|
|
|
|
|
|
ByteBuffer is backed by kmalloc heap memory which is a scarce resource.
This fixes an OOM panic when traversing a large directory.
|
|
|
|
This type is guaranteed to fit the largest sockaddr_foo supported by
the system. In our case, that's sockaddr_un.
|
|
Sometimes people write strange things like "assert(x), something();"
and this will not work if "assert(x)" expands to "".
So make it expand to ((void)0) instead.
|
|
|
|
Dr. POSIX says that's where they belong.
|
|
Many scripts seem to use "mv -f", so let's support that.
|
|
|
|
|
|
ByteBuffer::slice_view() allocates a new ByteBuffer object,
which as a RefPtr and everything.
Nowadays it should probably return a Bytes / Span<u8>, but AES was only
using slice_view() to extract the pointer again. So just add ady a
range check at the top, and do pointer arithmetic to do the same thing
faster.
Reduces time to run `disasm /bin/id` by a bit under 40%,
from ~8.3s to ~5s (min-of-3 runs).
|
|
|
|
So far, clicking on a link from the Markdown/HTML preview Web::PageView did
nothing - now we pass that link to Desktop::Launcher, which will then
open it in Browser, FileManager, another TextEditor instance etc.
|
|
We need to always return from Thread::wait_on, even when a thread
is being killed. This is necessary so that the kernel call stack
can clean up and release references held by it. Then, right before
transitioning back to user mode, we check if the thread is
supposed to die, and at that point change the thread state to
Dying to prevent further scheduling of this thread.
This addresses some possible resource leaks similar to #3073
|
|
|
|
Setting it in load() excludes users of ELF::Loader that don't actually
call load() but only use the Loader for symbolication purposes.
Perhaps the factoring here is not ideal.
|
|
|