mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2024-11-22 07:30:19 +00:00
Everywhere: Fix a variety of typos
Spelling fixes found by `codespell`.
This commit is contained in:
parent
63c727a4a3
commit
d0a1775369
Notes:
sideshowbarker
2024-07-18 01:43:16 +09:00
Author: https://github.com/bgianfo Commit: https://github.com/SerenityOS/serenity/commit/d0a1775369 Pull-request: https://github.com/SerenityOS/serenity/pull/15182 Reviewed-by: https://github.com/linusg ✅
30 changed files with 38 additions and 38 deletions
|
@ -225,7 +225,7 @@
|
||||||
// Spinning gradient demo/test
|
// Spinning gradient demo/test
|
||||||
backgroundAnimateDemo("gradient-spin", angle => `linear-gradient(${angle}deg, red 0%, black 20%, yellow 60%, cyan 100%)`)
|
backgroundAnimateDemo("gradient-spin", angle => `linear-gradient(${angle}deg, red 0%, black 20%, yellow 60%, cyan 100%)`)
|
||||||
|
|
||||||
// Transistion hints demo
|
// Transition hints demo
|
||||||
backgroundAnimateDemo("gradient-hints", t => `linear-gradient(to right, hotpink, ${((Math.sin(t/4)+1)*50)|0}%, rebeccapurple)`)
|
backgroundAnimateDemo("gradient-hints", t => `linear-gradient(to right, hotpink, ${((Math.sin(t/4)+1)*50)|0}%, rebeccapurple)`)
|
||||||
|
|
||||||
updateLabels();
|
updateLabels();
|
||||||
|
|
|
@ -8,7 +8,7 @@
|
||||||
Promise.reject(new Error('Success!'));
|
Promise.reject(new Error('Success!'));
|
||||||
window.timer = setTimeout(() => {
|
window.timer = setTimeout(() => {
|
||||||
const element = document.createElement('p');
|
const element = document.createElement('p');
|
||||||
element.innerText = 'Did not receieve unhandledrejection event in 100ms.';
|
element.innerText = 'Did not receive unhandledrejection event in 100ms.';
|
||||||
element.style.color = 'red';
|
element.style.color = 'red';
|
||||||
document.body.appendChild(element);
|
document.body.appendChild(element);
|
||||||
}, 100)
|
}, 100)
|
||||||
|
|
|
@ -12,4 +12,4 @@ $ Calculator
|
||||||
|
|
||||||
## Description
|
## Description
|
||||||
|
|
||||||
`Calculator` is a graphical calculator application. It supports basic arithmetic calculations in addition to special operations. It also has convenient shortcuts for mathmatical constants such as Pi.
|
`Calculator` is a graphical calculator application. It supports basic arithmetic calculations in addition to special operations. It also has convenient shortcuts for mathematical constants such as Pi.
|
||||||
|
|
|
@ -63,7 +63,7 @@ The main workspace has three partitions:
|
||||||
|
|
||||||
- The ***left section*** contains the glyph editor window. This window has three different zoom factors for ease of use and for your viewing comfort. They are 500%, 1000% and 1500%. You can freely switch to any zoom level at anytime while creating your font. Don't let the size of the glyph editor window fool you. This is where you will spend about 95% of the time. And the task is that of shaping each glyph by left+clicking on the mouse. You can form a dot, a line, or a complete glyph just by connecting the dots. If you need to undo a certain location with a black dot, you can right+click on top of the target area and it will revert back to empty. Each grid area can hold any of the three states: 1) on or black 2) off or white 3) empty or gray. On state is displayed as black by default. Off state is displayed as white by default. Empty state is displayed as gray by default. Off state or white is relevant most specially if the font is fixed-width as it dictates the distance a glyph will have from left, center or right. Empty state or gray is important for variable-width font as it affects the overall width of the glyph. For variable width fonts, you move the glyph flushed left on the glyph editor window and remove any extra empty grids by decrementing the present column counter located right under the glyph editor window and thereby leaving only the entire glyph all by itself. Below the glyph editor is the glyph tool which contains the following: pen icon for creating glyph itself, move icon to enable the entire glyph move to top, down, left or right from within the glyph editor window. Below the glyph tool are the transform icons which are flip horizontal, flip vertical, rotate counter-clockwise 90°and rotate clockwise 90°. Transform tools are most helpful when copying over existing glyphs and transforming them to form a new glyph. A becomes V, M becomes W, c becomes e, n becomes u, etcetera.
|
- The ***left section*** contains the glyph editor window. This window has three different zoom factors for ease of use and for your viewing comfort. They are 500%, 1000% and 1500%. You can freely switch to any zoom level at anytime while creating your font. Don't let the size of the glyph editor window fool you. This is where you will spend about 95% of the time. And the task is that of shaping each glyph by left+clicking on the mouse. You can form a dot, a line, or a complete glyph just by connecting the dots. If you need to undo a certain location with a black dot, you can right+click on top of the target area and it will revert back to empty. Each grid area can hold any of the three states: 1) on or black 2) off or white 3) empty or gray. On state is displayed as black by default. Off state is displayed as white by default. Empty state is displayed as gray by default. Off state or white is relevant most specially if the font is fixed-width as it dictates the distance a glyph will have from left, center or right. Empty state or gray is important for variable-width font as it affects the overall width of the glyph. For variable width fonts, you move the glyph flushed left on the glyph editor window and remove any extra empty grids by decrementing the present column counter located right under the glyph editor window and thereby leaving only the entire glyph all by itself. Below the glyph editor is the glyph tool which contains the following: pen icon for creating glyph itself, move icon to enable the entire glyph move to top, down, left or right from within the glyph editor window. Below the glyph tool are the transform icons which are flip horizontal, flip vertical, rotate counter-clockwise 90°and rotate clockwise 90°. Transform tools are most helpful when copying over existing glyphs and transforming them to form a new glyph. A becomes V, M becomes W, c becomes e, n becomes u, etcetera.
|
||||||
|
|
||||||
- The ***middle section*** contains two parts: the upper part which holds the entire glyph content of the font, or lack thereof if you are making a new one. And the lower part which contains ***Metadata*** information such as name, family, weight, slope, presentation size, mean line, baseline, glyph spacing and if the font is either fixed-width or variable-width. You can still further tweak your font paramaters via the Metadata section. The ` Fixed width ` toggle located at the right side next to Glyph spacing is of special note. It applies to the entire font file. It does not only apply to a single glyph or group of glyphs. It is the differentiating factor that informs the system if the font is or is not fixed-width. Fixed-width fonts are mostly used for Terminals and for displaying program source codes.
|
- The ***middle section*** contains two parts: the upper part which holds the entire glyph content of the font, or lack thereof if you are making a new one. And the lower part which contains ***Metadata*** information such as name, family, weight, slope, presentation size, mean line, baseline, glyph spacing and if the font is either fixed-width or variable-width. You can still further tweak your font parameters via the Metadata section. The ` Fixed width ` toggle located at the right side next to Glyph spacing is of special note. It applies to the entire font file. It does not only apply to a single glyph or group of glyphs. It is the differentiating factor that informs the system if the font is or is not fixed-width. Fixed-width fonts are mostly used for Terminals and for displaying program source codes.
|
||||||
|
|
||||||
- The ***right section*** which displays both search input for unicode blocks and the unicode block selection list.
|
- The ***right section*** which displays both search input for unicode blocks and the unicode block selection list.
|
||||||
Metadata and unicode blocks can be turned on or off via ` Menu -> View ` option. Unicode block filters only what to display contained within the range of the block. Basic Latin covers 000-007F, Latin-1 Supplement covers 0080-00FF, Latin Extended-A covers 0100-017F and so on and so forth. Global search for a glyph is affected when a certain block is currently selected. Only by selecting ` Show All ` will the global glyph search work as expected. So make it a habit of confirming that Show All is active before searching for a glyph.
|
Metadata and unicode blocks can be turned on or off via ` Menu -> View ` option. Unicode block filters only what to display contained within the range of the block. Basic Latin covers 000-007F, Latin-1 Supplement covers 0080-00FF, Latin Extended-A covers 0100-017F and so on and so forth. Global search for a glyph is affected when a certain block is currently selected. Only by selecting ` Show All ` will the global glyph search work as expected. So make it a habit of confirming that Show All is active before searching for a glyph.
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
## Name
|
## Name
|
||||||
|
|
||||||
GML Vertical Seperator Widget
|
GML Vertical Separator Widget
|
||||||
|
|
||||||
## Description
|
## Description
|
||||||
|
|
||||||
|
|
|
@ -15,7 +15,7 @@ On a lower level, this is what happens:
|
||||||
- On `exec()`, the event loop enters the event loop stack. Then, the event loop is pumped repeatedly.
|
- On `exec()`, the event loop enters the event loop stack. Then, the event loop is pumped repeatedly.
|
||||||
- Each `pump()` first puts the event loop to sleep with `wait_for_event()`, then handles all events.
|
- Each `pump()` first puts the event loop to sleep with `wait_for_event()`, then handles all events.
|
||||||
- `wait_for_event()` uses the `select(2)` function to wait until one of the prepared file descriptors becomes writeable or readable, or until a timeout expires. This means that while an event loop has nothing to do, the kernel keeps the thread at sleep. That's also the reason you'll see most GUI applications being listed with a "Selecting" state in SystemMonitor. After `select(2)` returns, it immediately dispatches signals to all signal handlers. Other new events (expired timers, file notifications) are put into the event queue.
|
- `wait_for_event()` uses the `select(2)` function to wait until one of the prepared file descriptors becomes writeable or readable, or until a timeout expires. This means that while an event loop has nothing to do, the kernel keeps the thread at sleep. That's also the reason you'll see most GUI applications being listed with a "Selecting" state in SystemMonitor. After `select(2)` returns, it immediately dispatches signals to all signal handlers. Other new events (expired timers, file notifications) are put into the event queue.
|
||||||
- The specific file descriptors are the file notifiers the event loop has registered (this is the original purpose of `select(2)`) as well as the wake pipe. This pipe is responsible for two things: Once a POSIX signal is recieved which the event loop has a handler for (this might happen at any time, on any thread), `handle_signal()` is entered, which writes the handler number to the pipe. But second, the `wake()` function just writes 0 (not a valid signal number) to the wake pipe, which is used to trigger an event loop wake from other threads.
|
- The specific file descriptors are the file notifiers the event loop has registered (this is the original purpose of `select(2)`) as well as the wake pipe. This pipe is responsible for two things: Once a POSIX signal is received which the event loop has a handler for (this might happen at any time, on any thread), `handle_signal()` is entered, which writes the handler number to the pipe. But second, the `wake()` function just writes 0 (not a valid signal number) to the wake pipe, which is used to trigger an event loop wake from other threads.
|
||||||
- The timeout of the `select(2)` call might be infinite if there's no time-based wake condition. If there are timers, however, the `select(2)` timeout is the minimum of all timer timeouts. If there are available events before `select(2)` is even called, the timeout is zero, leading to a `select(2)` which immediately returns.
|
- The timeout of the `select(2)` call might be infinite if there's no time-based wake condition. If there are timers, however, the `select(2)` timeout is the minimum of all timer timeouts. If there are available events before `select(2)` is even called, the timeout is zero, leading to a `select(2)` which immediately returns.
|
||||||
- Event handling from the event queue happens by invoking associated callbacks. Remember that the event queue has two primary sources of events: `deferred_invoke()` adds an event immediately and signals a wake, while after returning from `select(2)` new events are created based on timers and notifications.
|
- Event handling from the event queue happens by invoking associated callbacks. Remember that the event queue has two primary sources of events: `deferred_invoke()` adds an event immediately and signals a wake, while after returning from `select(2)` new events are created based on timers and notifications.
|
||||||
- If the event loop's exit was requested (checked while handling events), it returns the pending events to the queue so that the next-lower event loop can handle them. The assumption is that that event loop will resume running shortly. The return value of `exec()` has comparable purpose to a process return code, which is why the pattern `return app.exec()` is so common in GUI applications (`GUI::Application::exec()` just runs an event loop under the hood). In any case, even if the event loop's exit doesn't mean program exit, it is removed from the event loop stack.
|
- If the event loop's exit was requested (checked while handling events), it returns the pending events to the queue so that the next-lower event loop can handle them. The assumption is that that event loop will resume running shortly. The return value of `exec()` has comparable purpose to a process return code, which is why the pattern `return app.exec()` is so common in GUI applications (`GUI::Application::exec()` just runs an event loop under the hood). In any case, even if the event loop's exit doesn't mean program exit, it is removed from the event loop stack.
|
||||||
|
|
|
@ -289,5 +289,5 @@ Note that `Span<type>` differs from all of these types in that it provides a *vi
|
||||||
|
|
||||||
* C-style arrays are generally discouraged (and this also holds for pointer+size-style arrays when passing them around). They are only used for the implementation of other collections or in specific circumstances.
|
* C-style arrays are generally discouraged (and this also holds for pointer+size-style arrays when passing them around). They are only used for the implementation of other collections or in specific circumstances.
|
||||||
* `Array` is a thin wrapper around C-style arrays similar to `std::array`, where the template arguments include the size of the array. It allocates its data inline, just as arrays do, and never does any dynamic allocations.
|
* `Array` is a thin wrapper around C-style arrays similar to `std::array`, where the template arguments include the size of the array. It allocates its data inline, just as arrays do, and never does any dynamic allocations.
|
||||||
* `Vector` is similar to `std::vector` and represents a dynamic resizeable array. For most basic use cases of lists, this is the go-to collection. It has an optional inline capacity (the second template argument) which will allocate inline as the name suggests, but this is not always used. If the contents outgrow the inline capacity, Vector will automatically switch to the standard out-of-line storage. This is allocated on the heap, and the space is automatically resized and moved when more (or less) space is needed.
|
* `Vector` is similar to `std::vector` and represents a dynamic resizable array. For most basic use cases of lists, this is the go-to collection. It has an optional inline capacity (the second template argument) which will allocate inline as the name suggests, but this is not always used. If the contents outgrow the inline capacity, Vector will automatically switch to the standard out-of-line storage. This is allocated on the heap, and the space is automatically resized and moved when more (or less) space is needed.
|
||||||
* `FixedArray` is essentially a runtime-sized `Array`. It can't resize like `Vector`, but it's ideal for circumstances where the size is not known at compile time but doesn't need to change once the collection is initialized. `FixedArray` guarantees to not allocate or deallocate except for its constructor and destructor.
|
* `FixedArray` is essentially a runtime-sized `Array`. It can't resize like `Vector`, but it's ideal for circumstances where the size is not known at compile time but doesn't need to change once the collection is initialized. `FixedArray` guarantees to not allocate or deallocate except for its constructor and destructor.
|
||||||
|
|
|
@ -15,7 +15,7 @@ namespace Kernel {
|
||||||
struct TrapFrame {
|
struct TrapFrame {
|
||||||
u64 x[31]; // Saved general purpose registers
|
u64 x[31]; // Saved general purpose registers
|
||||||
u64 spsr_el1; // Save Processor Status Register, EL1
|
u64 spsr_el1; // Save Processor Status Register, EL1
|
||||||
u64 elr_el1; // Exception Link Reigster, EL1
|
u64 elr_el1; // Exception Link Register, EL1
|
||||||
u64 tpidr_el1; // EL0 thread ID
|
u64 tpidr_el1; // EL0 thread ID
|
||||||
u64 sp_el0; // EL0 stack pointer
|
u64 sp_el0; // EL0 stack pointer
|
||||||
};
|
};
|
||||||
|
|
|
@ -112,7 +112,7 @@ UNMAP_AFTER_INIT ErrorOr<void> I8042Controller::detect_devices()
|
||||||
|
|
||||||
// Note: The default BIOS on the QEMU microvm machine type (qboot) doesn't
|
// Note: The default BIOS on the QEMU microvm machine type (qboot) doesn't
|
||||||
// behave like SeaBIOS, which means it doesn't set first port scan code translation.
|
// behave like SeaBIOS, which means it doesn't set first port scan code translation.
|
||||||
// Howerver we rely on compatbility feature of the i8042 to send scan codes of set 1.
|
// However we rely on compatibility feature of the i8042 to send scan codes of set 1.
|
||||||
// To ensure that the controller is always outputting correct scan codes, set it
|
// To ensure that the controller is always outputting correct scan codes, set it
|
||||||
// to scan code 2 (because SeaBIOS on regular QEMU machine does this for us) and enable
|
// to scan code 2 (because SeaBIOS on regular QEMU machine does this for us) and enable
|
||||||
// first port translation to ensure all scan codes are translated to scan code set 1.
|
// first port translation to ensure all scan codes are translated to scan code set 1.
|
||||||
|
|
|
@ -149,7 +149,7 @@ public:
|
||||||
return;
|
return;
|
||||||
filepath_string_index = registered_result.value();
|
filepath_string_index = registered_result.value();
|
||||||
} else {
|
} else {
|
||||||
auto invalid_path_string = KString::try_create("<INVALID_FILE_PATH>"sv); // TODO: Performance, unecessary allocations.
|
auto invalid_path_string = KString::try_create("<INVALID_FILE_PATH>"sv); // TODO: Performance, unnecessary allocations.
|
||||||
if (invalid_path_string.is_error())
|
if (invalid_path_string.is_error())
|
||||||
return;
|
return;
|
||||||
auto registered_result = event_buffer->register_string(move(invalid_path_string.value()));
|
auto registered_result = event_buffer->register_string(move(invalid_path_string.value()));
|
||||||
|
|
|
@ -100,7 +100,7 @@ private:
|
||||||
// Note: This data member should be used with LUNAddress target_id and disk_id.
|
// Note: This data member should be used with LUNAddress target_id and disk_id.
|
||||||
// LUNs are agnostic system-wide addresses, so they are assigned without caring about the specific hardware interfaces.
|
// LUNs are agnostic system-wide addresses, so they are assigned without caring about the specific hardware interfaces.
|
||||||
// This class member on the other side, is meant to be assigned *per hardware type*,
|
// This class member on the other side, is meant to be assigned *per hardware type*,
|
||||||
// which means in constrast to the LUNAddress controller_id struct member, we take the index of the hardware
|
// which means in contrast to the LUNAddress controller_id struct member, we take the index of the hardware
|
||||||
// controller among its fellow controllers of the same hardware type in the system.
|
// controller among its fellow controllers of the same hardware type in the system.
|
||||||
u32 const m_hardware_relative_controller_id { 0 };
|
u32 const m_hardware_relative_controller_id { 0 };
|
||||||
|
|
||||||
|
|
|
@ -236,7 +236,7 @@ NEVER_INLINE void syscall_handler(TrapFrame* trap)
|
||||||
// Check if we're supposed to return to userspace or just die.
|
// Check if we're supposed to return to userspace or just die.
|
||||||
current_thread->die_if_needed();
|
current_thread->die_if_needed();
|
||||||
|
|
||||||
// Crash any processes which have commited a promise violation during syscall handling.
|
// Crash any processes which have committed a promise violation during syscall handling.
|
||||||
if (result.is_error() && result.error().code() == EPROMISEVIOLATION) {
|
if (result.is_error() && result.error().code() == EPROMISEVIOLATION) {
|
||||||
VERIFY(current_thread->is_promise_violation_pending());
|
VERIFY(current_thread->is_promise_violation_pending());
|
||||||
current_thread->set_promise_violation_pending(false);
|
current_thread->set_promise_violation_pending(false);
|
||||||
|
|
|
@ -606,7 +606,7 @@ ErrorOr<FlatPtr> Process::sys$msync(Userspace<void*> address, size_t size, int f
|
||||||
|
|
||||||
return address_space().with([&](auto& space) -> ErrorOr<FlatPtr> {
|
return address_space().with([&](auto& space) -> ErrorOr<FlatPtr> {
|
||||||
auto regions = TRY(space->find_regions_intersecting(Memory::VirtualRange { address.vaddr(), rounded_size }));
|
auto regions = TRY(space->find_regions_intersecting(Memory::VirtualRange { address.vaddr(), rounded_size }));
|
||||||
// All regions from address upto address+size shall be mapped
|
// All regions from address up to address+size shall be mapped
|
||||||
if (regions.is_empty())
|
if (regions.is_empty())
|
||||||
return ENOMEM;
|
return ENOMEM;
|
||||||
|
|
||||||
|
|
|
@ -245,7 +245,7 @@ extern "C" [[noreturn]] UNMAP_AFTER_INIT void init(BootInfo const& boot_info)
|
||||||
|
|
||||||
if (APIC::initialized() && APIC::the().enabled_processor_count() > 1) {
|
if (APIC::initialized() && APIC::the().enabled_processor_count() > 1) {
|
||||||
// We must set up the AP boot environment before switching to a kernel process,
|
// We must set up the AP boot environment before switching to a kernel process,
|
||||||
// as pages below address USER_RANGE_BASE are only accesible through the kernel
|
// as pages below address USER_RANGE_BASE are only accessible through the kernel
|
||||||
// page directory.
|
// page directory.
|
||||||
APIC::the().setup_ap_boot_environment();
|
APIC::the().setup_ap_boot_environment();
|
||||||
}
|
}
|
||||||
|
|
|
@ -259,7 +259,7 @@ build_target() {
|
||||||
cmake -S "$SERENITY_SOURCE_DIR/Meta/Lagom" -B "$BUILD_DIR" -DBUILD_LAGOM=ON
|
cmake -S "$SERENITY_SOURCE_DIR/Meta/Lagom" -B "$BUILD_DIR" -DBUILD_LAGOM=ON
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Get either the environement MAKEJOBS or all processors via CMake
|
# Get either the environment MAKEJOBS or all processors via CMake
|
||||||
[ -z "$MAKEJOBS" ] && MAKEJOBS=$(cmake -P "$SERENITY_SOURCE_DIR/Meta/CMake/processor-count.cmake" 2>&1)
|
[ -z "$MAKEJOBS" ] && MAKEJOBS=$(cmake -P "$SERENITY_SOURCE_DIR/Meta/CMake/processor-count.cmake" 2>&1)
|
||||||
|
|
||||||
# With zero args, we are doing a standard "build"
|
# With zero args, we are doing a standard "build"
|
||||||
|
|
|
@ -51,7 +51,7 @@ TEST_CASE(move)
|
||||||
TEST_CASE(no_allocation)
|
TEST_CASE(no_allocation)
|
||||||
{
|
{
|
||||||
FixedArray<int> array = FixedArray<int>::must_create_but_fixme_should_propagate_errors(5);
|
FixedArray<int> array = FixedArray<int>::must_create_but_fixme_should_propagate_errors(5);
|
||||||
EXPECT_NO_CRASH("Assigments", [&] {
|
EXPECT_NO_CRASH("Assignments", [&] {
|
||||||
NoAllocationGuard guard;
|
NoAllocationGuard guard;
|
||||||
array[0] = 0;
|
array[0] = 0;
|
||||||
array[1] = 1;
|
array[1] = 1;
|
||||||
|
|
|
@ -12,7 +12,7 @@
|
||||||
|
|
||||||
TEST_CASE(malloc_limits)
|
TEST_CASE(malloc_limits)
|
||||||
{
|
{
|
||||||
EXPECT_NO_CRASH("Allocation of 0 size should succed at allocation and release", [] {
|
EXPECT_NO_CRASH("Allocation of 0 size should succeed at allocation and release", [] {
|
||||||
errno = 0;
|
errno = 0;
|
||||||
void* ptr = malloc(0);
|
void* ptr = malloc(0);
|
||||||
EXPECT_EQ(errno, 0);
|
EXPECT_EQ(errno, 0);
|
||||||
|
|
|
@ -502,7 +502,7 @@ static bool verify_test(Result<void, TestError>& result, TestMetadata const& met
|
||||||
// has one.
|
// has one.
|
||||||
// The third test is the same as the second, upper module is fine but
|
// The third test is the same as the second, upper module is fine but
|
||||||
// import a module with SyntaxError, however here the phase is runtime.
|
// import a module with SyntaxError, however here the phase is runtime.
|
||||||
// In conclusion all the test which would cause the inital module to not
|
// In conclusion all the test which would cause the initial module to not
|
||||||
// be evaluated !should! have '$DONOTEVALUATE();' at the top causing a
|
// be evaluated !should! have '$DONOTEVALUATE();' at the top causing a
|
||||||
// Reference error, meaning we just ignore the phase in the SyntaxError case.
|
// Reference error, meaning we just ignore the phase in the SyntaxError case.
|
||||||
return error.type == metadata.type;
|
return error.type == metadata.type;
|
||||||
|
@ -587,7 +587,7 @@ int main(int argc, char** argv)
|
||||||
}
|
}
|
||||||
|
|
||||||
if (timeout <= 0) {
|
if (timeout <= 0) {
|
||||||
warnln("timeout must be atleast 1");
|
warnln("timeout must be at least 1");
|
||||||
return 2;
|
return 2;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -51,7 +51,7 @@ void TerminalResult::activate() const
|
||||||
{
|
{
|
||||||
// FIXME: This should be a GUI::Process::spawn_or_show_error(), however this is a
|
// FIXME: This should be a GUI::Process::spawn_or_show_error(), however this is a
|
||||||
// Assistant::Result object, which does not have access to the application's GUI::Window* pointer
|
// Assistant::Result object, which does not have access to the application's GUI::Window* pointer
|
||||||
// (which spawn_or_show_error() needs incase it has to open a error message box).
|
// (which spawn_or_show_error() needs in case it has to open a error message box).
|
||||||
(void)Core::Process::spawn("/bin/Terminal"sv, Array { "-k", "-e", title().characters() });
|
(void)Core::Process::spawn("/bin/Terminal"sv, Array { "-k", "-e", title().characters() });
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1006,7 +1006,7 @@ NonnullRefPtr<GUI::Action> HackStudioWidget::create_debug_action()
|
||||||
|
|
||||||
m_terminal_wrapper->clear_including_history();
|
m_terminal_wrapper->clear_including_history();
|
||||||
|
|
||||||
// The debugger calls wait() on the debugee, so the TerminalWrapper can't do that.
|
// The debugger calls wait() on the debuggee, so the TerminalWrapper can't do that.
|
||||||
auto ptm_res = m_terminal_wrapper->setup_master_pseudoterminal(TerminalWrapper::WaitForChildOnExit::No);
|
auto ptm_res = m_terminal_wrapper->setup_master_pseudoterminal(TerminalWrapper::WaitForChildOnExit::No);
|
||||||
if (ptm_res.is_error()) {
|
if (ptm_res.is_error()) {
|
||||||
perror("setup_master_pseudoterminal");
|
perror("setup_master_pseudoterminal");
|
||||||
|
|
|
@ -24,7 +24,7 @@ void SoftVPU::LDMXCSR(X86::Instruction const& insn)
|
||||||
VERIFY((m_mxcsr.mxcsr & 0xFFFF'0000) == 0);
|
VERIFY((m_mxcsr.mxcsr & 0xFFFF'0000) == 0);
|
||||||
|
|
||||||
// Just let the host's SSE (or if not available x87) handle the rounding for us
|
// Just let the host's SSE (or if not available x87) handle the rounding for us
|
||||||
// We do not want to accedentally raise an FP-Exception on the host, so we
|
// We do not want to accidentally raise an FP-Exception on the host, so we
|
||||||
// mask all exceptions
|
// mask all exceptions
|
||||||
#ifdef __SSE__
|
#ifdef __SSE__
|
||||||
AK::MXCSR temp = m_mxcsr;
|
AK::MXCSR temp = m_mxcsr;
|
||||||
|
@ -99,7 +99,7 @@ void SoftVPU::MOVLPS_xmm1_xmm2m64(X86::Instruction const& insn)
|
||||||
m_xmm[xmm1].puqw[0] = m_xmm[insn.modrm().rm()].puqw[1];
|
m_xmm[xmm1].puqw[0] = m_xmm[insn.modrm().rm()].puqw[1];
|
||||||
} else {
|
} else {
|
||||||
// FIXME: Shadows
|
// FIXME: Shadows
|
||||||
// Note: Technically we are transfereing two packed floats not a quad word
|
// Note: Technically we are transferring two packed floats not a quad word
|
||||||
m_xmm[xmm1].puqw[0] = insn.modrm().read64(m_cpu, insn).value();
|
m_xmm[xmm1].puqw[0] = insn.modrm().read64(m_cpu, insn).value();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -108,7 +108,7 @@ void SoftVPU::MOVLPS_m64_xmm2(X86::Instruction const& insn)
|
||||||
u8 xmm2 = insn.modrm().reg();
|
u8 xmm2 = insn.modrm().reg();
|
||||||
// FIXME: This might not hold true for SSE2 or later
|
// FIXME: This might not hold true for SSE2 or later
|
||||||
VERIFY(!insn.modrm().is_register());
|
VERIFY(!insn.modrm().is_register());
|
||||||
// Note: Technically we are transfereing two packed floats not a quad word
|
// Note: Technically we are transferring two packed floats not a quad word
|
||||||
insn.modrm().write64(m_cpu, insn, ValueWithShadow<u64>::create_initialized(m_xmm[xmm2].puqw[0]));
|
insn.modrm().write64(m_cpu, insn, ValueWithShadow<u64>::create_initialized(m_xmm[xmm2].puqw[0]));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -166,7 +166,7 @@ void SoftVPU::MOVHPS_xmm1_xmm2m64(X86::Instruction const& insn)
|
||||||
m_xmm[xmm1].puqw[1] = m_xmm[insn.modrm().rm()].puqw[0];
|
m_xmm[xmm1].puqw[1] = m_xmm[insn.modrm().rm()].puqw[0];
|
||||||
} else {
|
} else {
|
||||||
// FIXME: Shadows
|
// FIXME: Shadows
|
||||||
// Note: Technically we are transfereing two packed floats not a quad word
|
// Note: Technically we are transferring two packed floats not a quad word
|
||||||
m_xmm[xmm1].puqw[1] = insn.modrm().read64(m_cpu, insn).value();
|
m_xmm[xmm1].puqw[1] = insn.modrm().read64(m_cpu, insn).value();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -174,7 +174,7 @@ void SoftVPU::MOVHPS_m64_xmm2(X86::Instruction const& insn)
|
||||||
{
|
{
|
||||||
u8 xmm1 = insn.modrm().reg();
|
u8 xmm1 = insn.modrm().reg();
|
||||||
VERIFY(!insn.modrm().is_register());
|
VERIFY(!insn.modrm().is_register());
|
||||||
// Note: Technically we are transfereing two packed floats not a quad word
|
// Note: Technically we are transferring two packed floats not a quad word
|
||||||
insn.modrm().write64(m_cpu, insn, ValueWithShadow<u64>::create_initialized(m_xmm[xmm1].puqw[1]));
|
insn.modrm().write64(m_cpu, insn, ValueWithShadow<u64>::create_initialized(m_xmm[xmm1].puqw[1]));
|
||||||
}
|
}
|
||||||
void SoftVPU::MOVAPS_xmm1_xmm2m128(X86::Instruction const& insn)
|
void SoftVPU::MOVAPS_xmm1_xmm2m128(X86::Instruction const& insn)
|
||||||
|
@ -202,7 +202,7 @@ void SoftVPU::MOVAPS_xmm1m128_xmm2(X86::Instruction const& insn)
|
||||||
|
|
||||||
void SoftVPU::CVTPI2PS_xmm1_mm2m64(X86::Instruction const& insn)
|
void SoftVPU::CVTPI2PS_xmm1_mm2m64(X86::Instruction const& insn)
|
||||||
{
|
{
|
||||||
// FIXME: Raise Precission
|
// FIXME: Raise Precision
|
||||||
// FIXME: Honor Rounding control
|
// FIXME: Honor Rounding control
|
||||||
u8 xmm1 = insn.modrm().reg();
|
u8 xmm1 = insn.modrm().reg();
|
||||||
if (insn.modrm().is_register()) {
|
if (insn.modrm().is_register()) {
|
||||||
|
@ -218,7 +218,7 @@ void SoftVPU::CVTPI2PS_xmm1_mm2m64(X86::Instruction const& insn)
|
||||||
}
|
}
|
||||||
void SoftVPU::CVTSI2SS_xmm1_rm32(X86::Instruction const& insn)
|
void SoftVPU::CVTSI2SS_xmm1_rm32(X86::Instruction const& insn)
|
||||||
{
|
{
|
||||||
// FIXME: Raise Precission
|
// FIXME: Raise Precision
|
||||||
// FIXME: Shadows
|
// FIXME: Shadows
|
||||||
// FIXME: Honor Rounding Control
|
// FIXME: Honor Rounding Control
|
||||||
m_xmm[insn.modrm().reg()].ps[0] = (i32)insn.modrm().read32(m_cpu, insn).value();
|
m_xmm[insn.modrm().reg()].ps[0] = (i32)insn.modrm().read32(m_cpu, insn).value();
|
||||||
|
|
|
@ -238,7 +238,7 @@ double UnsignedBigInteger::to_double(UnsignedBigInteger::RoundingMode rounding_m
|
||||||
u8 bits_dropped_from_final_word = 0;
|
u8 bits_dropped_from_final_word = 0;
|
||||||
|
|
||||||
if (bits_written < bits_to_read && last_word_index > 0) {
|
if (bits_written < bits_to_read && last_word_index > 0) {
|
||||||
// Second word can always just cleanly be shifted upto the final bit of the first word
|
// Second word can always just cleanly be shifted up to the final bit of the first word
|
||||||
// since the first has at most BIT_IN_WORD - 1, 31
|
// since the first has at most BIT_IN_WORD - 1, 31
|
||||||
u64 next_word = m_words[last_word_index - 1];
|
u64 next_word = m_words[last_word_index - 1];
|
||||||
VERIFY((mantissa & (next_word << (bits_in_u64 - bits_written - BITS_IN_WORD))) == 0);
|
VERIFY((mantissa & (next_word << (bits_in_u64 - bits_written - BITS_IN_WORD))) == 0);
|
||||||
|
|
|
@ -289,7 +289,7 @@ void AntiAliasingPainter::draw_ellipse(IntRect const& a_rect, Color color, int t
|
||||||
{
|
{
|
||||||
// FIXME: Come up with an allocation-free version of this!
|
// FIXME: Come up with an allocation-free version of this!
|
||||||
// Using draw_line() for segments of an ellipse was attempted but gave really poor results :^(
|
// Using draw_line() for segments of an ellipse was attempted but gave really poor results :^(
|
||||||
// There probably is a way to adjust the fill of draw_ellipse_part() to do this, but gettting it rendering correctly is tricky.
|
// There probably is a way to adjust the fill of draw_ellipse_part() to do this, but getting it rendering correctly is tricky.
|
||||||
// The outline of the steps required to paint it efficiently is:
|
// The outline of the steps required to paint it efficiently is:
|
||||||
// - Paint the outer ellipse without the fill (from the fill() lambda in draw_ellipse_part())
|
// - Paint the outer ellipse without the fill (from the fill() lambda in draw_ellipse_part())
|
||||||
// - Paint the inner ellipse, but in the set_pixel() invert the alpha values
|
// - Paint the inner ellipse, but in the set_pixel() invert the alpha values
|
||||||
|
|
|
@ -23,7 +23,7 @@ describe("normal behavior", () => {
|
||||||
expect(new Intl.Locale("ar", { hourCycle: "h24" }).hourCycles).toEqual(["h24"]);
|
expect(new Intl.Locale("ar", { hourCycle: "h24" }).hourCycles).toEqual(["h24"]);
|
||||||
|
|
||||||
// Invalid hourCycles also take precedence when specified in the locale string. Unlike other
|
// Invalid hourCycles also take precedence when specified in the locale string. Unlike other
|
||||||
// properties, Locale("en", { hourCycle: "ladybird" }) will explictly throw.
|
// properties, Locale("en", { hourCycle: "ladybird" }) will explicitly throw.
|
||||||
expect(new Intl.Locale("en-u-hc-ladybird").hourCycles).toEqual(["ladybird"]);
|
expect(new Intl.Locale("en-u-hc-ladybird").hourCycles).toEqual(["ladybird"]);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
|
@ -106,7 +106,7 @@ describe("tagged template literal functionality", () => {
|
||||||
expect(raw[1]).toBe("\\nbar");
|
expect(raw[1]).toBe("\\nbar");
|
||||||
});
|
});
|
||||||
|
|
||||||
test("invalid escapes give undefined cooked values but can be accesed in raw form", () => {
|
test("invalid escapes give undefined cooked values but can be accessed in raw form", () => {
|
||||||
let calls = 0;
|
let calls = 0;
|
||||||
let lastValue = null;
|
let lastValue = null;
|
||||||
function noCookedButRaw(values) {
|
function noCookedButRaw(values) {
|
||||||
|
|
|
@ -2477,7 +2477,7 @@ RefPtr<StyleValue> Parser::parse_linear_gradient_function(ComponentValue const&
|
||||||
if (side_a.has_value() && !side_b.has_value()) {
|
if (side_a.has_value() && !side_b.has_value()) {
|
||||||
gradient_direction = *side_a;
|
gradient_direction = *side_a;
|
||||||
} else if (side_a.has_value() && side_b.has_value()) {
|
} else if (side_a.has_value() && side_b.has_value()) {
|
||||||
// Covert two sides to a corner
|
// Convert two sides to a corner
|
||||||
if (to_underlying(*side_b) < to_underlying(*side_a))
|
if (to_underlying(*side_b) < to_underlying(*side_a))
|
||||||
swap(side_a, side_b);
|
swap(side_a, side_b);
|
||||||
if (side_a == SideOrCorner::Top && side_b == SideOrCorner::Left)
|
if (side_a == SideOrCorner::Top && side_b == SideOrCorner::Left)
|
||||||
|
|
|
@ -158,7 +158,7 @@ DOM::ExceptionOr<String> serialize_node_to_xml_string_impl(JS::NonnullGCPtr<DOM:
|
||||||
// - The require well-formed flag
|
// - The require well-formed flag
|
||||||
|
|
||||||
// The XML serialization algorithm produces an XML serialization of an arbitrary DOM node node based on the node's interface type.
|
// The XML serialization algorithm produces an XML serialization of an arbitrary DOM node node based on the node's interface type.
|
||||||
// Each referenced algorithm is to be passed the arguments as they were recieved by the caller and return their result to the caller.
|
// Each referenced algorithm is to be passed the arguments as they were received by the caller and return their result to the caller.
|
||||||
// Re-throw any exceptions.
|
// Re-throw any exceptions.
|
||||||
// If node's interface is:
|
// If node's interface is:
|
||||||
|
|
||||||
|
|
|
@ -53,7 +53,7 @@ void StackingContext::sort()
|
||||||
|
|
||||||
static PaintPhase to_paint_phase(StackingContext::StackingContextPaintPhase phase)
|
static PaintPhase to_paint_phase(StackingContext::StackingContextPaintPhase phase)
|
||||||
{
|
{
|
||||||
// There are not a fully correct mapping since some stacking context phases are combind.
|
// There are not a fully correct mapping since some stacking context phases are combined.
|
||||||
switch (phase) {
|
switch (phase) {
|
||||||
case StackingContext::StackingContextPaintPhase::Floats:
|
case StackingContext::StackingContextPaintPhase::Floats:
|
||||||
case StackingContext::StackingContextPaintPhase::BackgroundAndBordersForInlineLevelAndReplaced:
|
case StackingContext::StackingContextPaintPhase::BackgroundAndBordersForInlineLevelAndReplaced:
|
||||||
|
|
|
@ -2223,14 +2223,14 @@ void Instruction::to_string_internal(StringBuilder& builder, u32 origin, SymbolP
|
||||||
append_mnemonic_space();
|
append_mnemonic_space();
|
||||||
append_xmm();
|
append_xmm();
|
||||||
append(',');
|
append(',');
|
||||||
append_mmrm32(); // FIXME: No Memmory
|
append_mmrm32(); // FIXME: No Memory
|
||||||
break;
|
break;
|
||||||
case OP_mm1_xmm2m128:
|
case OP_mm1_xmm2m128:
|
||||||
case OP_mm_xmm:
|
case OP_mm_xmm:
|
||||||
append_mnemonic_space();
|
append_mnemonic_space();
|
||||||
append_mm();
|
append_mm();
|
||||||
append(',');
|
append(',');
|
||||||
append_xmmrm32(); // FIXME: No Memmory
|
append_xmmrm32(); // FIXME: No Memory
|
||||||
break;
|
break;
|
||||||
case OP_xmm1_imm8:
|
case OP_xmm1_imm8:
|
||||||
append_mnemonic_space();
|
append_mnemonic_space();
|
||||||
|
|
|
@ -16,7 +16,7 @@ fn(a) { echo $a }
|
||||||
if not test "$(fn 1)" = 1 { fail cannot invoke "'fn 1'" with explicit names }
|
if not test "$(fn 1)" = 1 { fail cannot invoke "'fn 1'" with explicit names }
|
||||||
if not test "$(fn 1 2)" = 1 { fail cannot invoke "'fn 1 2'" with explicit names and extra arguments }
|
if not test "$(fn 1 2)" = 1 { fail cannot invoke "'fn 1 2'" with explicit names and extra arguments }
|
||||||
|
|
||||||
# FIXME: Reenable this when we have something akin to 'try'
|
# FIXME: Re-enable this when we have something akin to 'try'
|
||||||
# or when not-enough-args isn't a hard failure.
|
# or when not-enough-args isn't a hard failure.
|
||||||
# Can it fail?
|
# Can it fail?
|
||||||
# if fn 2>/dev/null {
|
# if fn 2>/dev/null {
|
||||||
|
|
Loading…
Reference in a new issue