Commit graph

28377 commits

Author SHA1 Message Date
Tim Schumacher
e7f99edefa Tests: Add a test for mbsinit 2021-10-03 11:13:50 +00:00
Tim Schumacher
212f9308d4 LibC: Specifically clear only stored bytes after successful mbrtowc 2021-10-03 11:13:50 +00:00
Tim Schumacher
06f30943ef LibC: Manually count stored bytes in mbstate_t
This is probably a bit faster than constantly having to look through all
stored bytes. It also helps when we are trying to store actual null
bytes.
2021-10-03 11:13:50 +00:00
Tim Schumacher
3c807402b3 LibC: Remove the mbstate_reset helper
A zero-initialized mbstate_t struct has to be a valid initial state, so
we can just zero-initialize it whenever we need to reset.

Having a helper function for resetting the struct might imply that you
can add additional setup operations afterwards, which is not the case.
2021-10-03 11:13:50 +00:00
Ali Mohammad Pur
ab46864674 LibTLS: Split large application data packets into chunks
Each TLS record has a limited max size, we should respect that and split
the packets.
Fixes RecordOverflow errors when a packet larger than 18432 bytes is
sent over.
2021-10-03 14:42:00 +03:30
Tim Schumacher
c3b14588ec LibC: Stub out swprintf 2021-10-03 05:28:51 +00:00
Tim Schumacher
e82dc7c77a LibC: Stub out wcstold 2021-10-03 05:28:51 +00:00
Tim Schumacher
893d9e8741 LibC: Stub out wcstod 2021-10-03 05:28:51 +00:00
Tim Schumacher
e0548692ac LibC: Stub out wcstof 2021-10-03 05:28:51 +00:00
Tim Schumacher
783ddd261d LibC: Stub out wcstoull 2021-10-03 05:28:51 +00:00
Tim Schumacher
a65f52d8de LibC: Stub out wcstoul 2021-10-03 05:28:51 +00:00
Tim Schumacher
05b283f552 LibC: Implement wmemmove 2021-10-03 05:28:51 +00:00
Tim Schumacher
fa1208edfd LibC: Implement wmemset 2021-10-03 05:28:51 +00:00
Tim Schumacher
485c0ef691 LibC: Implement wmemcpy 2021-10-03 05:28:51 +00:00
Tim Schumacher
0ca1df4dc6 LibC: Implement wmemchr 2021-10-03 05:28:51 +00:00
Tim Schumacher
5ac2e84264 LibC: Implement wcsstr 2021-10-03 05:28:51 +00:00
Tim Schumacher
1b078f87b7 LibC: Implement wcspbrk 2021-10-03 05:28:51 +00:00
Ali Mohammad Pur
c80b65b827 LibRegex: Avoid creating a new temporary RegexStringView in Char compare
Instead of making a new string to compare against, simply grab the first
code unit of the input and compare against that.
2021-10-03 01:15:17 +02:00
Luke Wilde
6a7739c645 LibWeb: Convert Node.childNodes to NodeList
This changes the old child_nodes implementation to children_as_vector
so that can still be used in insert_before.
2021-10-03 00:18:52 +02:00
Luke Wilde
2f7fb1fe63 LibWeb: Convert ParentNode.querySelectorAll to NodeList 2021-10-03 00:18:52 +02:00
Luke Wilde
8d6db36cbb LibWeb: Add support for NodeList
This introduces 3 classes: NodeList, StaticNodeList and LiveNodeList.
NodeList is the base of the static and live versions. Static is a
snapshot whereas live acts on the underlying data and thus inhibits
the same issues we have currently with HTMLCollection.

They were split into separate classes to not have them weirdly
mis-mashed together.

The create functions for static and live both return a NNRP to the base
class. This is to prevent having to do awkward casting at creation
and/or return, as the bindings expect to see the base NodeList only.
2021-10-03 00:18:52 +02:00
Luke Wilde
bfd089fbd1 LibWeb: Add support for IDL value iterators
This also renames Interface::iterator_types to pair_iterator_types to
reduce confusion between value and pair iterators.
2021-10-03 00:18:52 +02:00
Nico Weber
2c0d329bf6 Kernel: Make aarch64 UART::print_num() print u64s 2021-10-02 21:23:28 +01:00
Nico Weber
bc213ad7a2 Kernel: Add a Timer class for aarch64
For now, this can only query microseconds since boot.

Use this to print a timestamp every second. This busy-loops
until a second has passed. This might be a good first use of
interrupts soon.

qemu used to not implement this timer at some point, but
it seems to work fine even in qemu now (qemu v 5.2.0).
2021-10-02 21:23:28 +01:00
Linus Groh
496d2e3c29 LibGL: Remove duplicate GLboolean typedef
Fixes #10268.
2021-10-02 21:10:13 +01:00
Jelle Raaijmakers
06f84d927e Ports: Add Ncdu 2021-10-02 21:07:47 +01:00
Jelle Raaijmakers
718b205a9e Base: Correct value for default white terminal color 2021-10-02 21:07:47 +01:00
Jelle Raaijmakers
49ccda5d97 LibVT: Implement G0..G3 and VT100 translation table 2021-10-02 21:07:47 +01:00
Jelle Raaijmakers
aaa1382bd6 LibVT: Implement support for Cursor Keys Mode (DECCKM) 2021-10-02 21:07:47 +01:00
Jelle Raaijmakers
e33e0e6a27 LibVT: Add stubs for DECPNM, DECPAM
Still not implemented, but provides easier to grasp FIXMEs.
2021-10-02 21:07:47 +01:00
Jelle Raaijmakers
91ad7754fe Ports: Compile ncurses with --enable-term-driver
In commit ba97548686 `--with-termlib` was added to produce a
`libtinfo.a` file that nano then required. However, this causes ncurses
to build with _only_ screen-pointer ext funcs: e.g.
`reset_prog_mode_sp` exists, but `reset_prog_mode` does not.

By switching to `--enable-term-driver`, all functions are properly
exported again and the nano port compiles and runs just fine. :^)
2021-10-02 21:07:47 +01:00
Jelle Raaijmakers
8487ff551c Ports: Switch ncurses to SHA256 auth type 2021-10-02 21:07:47 +01:00
Gal Horowitz
cfc5df27f0 FontEditor: Close preview window when the main window is closed 2021-10-02 20:55:14 +02:00
Gal Horowitz
aa180c821d LibGFX: Draw the ends of lines with non-standard thickness
Lines are drawn using squares the size of the thickness, so if the
length of the line was not a multiple of the thickness, the end of the
line was not drawn correctly.
2021-10-02 20:54:47 +02:00
Gal Horowitz
cd7473d1a3 PixelPaint: Correctly offset stroke position for even thicknesses 2021-10-02 20:54:32 +02:00
Gal Horowitz
be4485fe85 PixelPaint: LayerListWidget::set_selected_layer now handles nullptr 2021-10-02 20:54:12 +02:00
Andreas Kling
87290e300e AK: Simplify Utf16View::operator==(Utf16View) 2021-10-02 18:32:56 +02:00
Andreas Kling
f0b3a06746 LibJS: Use Vector<u16, 1> for UTF-16 in a few more places 2021-10-02 18:32:56 +02:00
Brian Gianforcaro
dc99b702be Meta: Include source sha in sonarcloud analysis metadata
Having the version included in each analysis allows you to do more
filtering in the UI where results are viewed.
2021-10-02 18:16:15 +02:00
Brian Gianforcaro
92844a6af6 Kernel: Access Processor static methods statically
SonarCloud flagged this "Code Smell", where we are accessing these
static methods as if they are instance methods. While it is technically
possible, it is very confusing to read when you realize they are static
functions.
2021-10-02 18:16:15 +02:00
Brian Gianforcaro
0223faf6f4 Kernel: Access MemoryManager static functions statically
SonarCloud flagged this "Code Smell", where we are accessing these
static methods as if they are instance methods. While it is technically
possible, it is very confusing to read when you realize they are static
functions.
2021-10-02 18:16:15 +02:00
Andreas Kling
024367d82e LibJS+AK: Use Vector<u16, 1> for UTF-16 string storage
It's very common to encounter single-character strings in JavaScript on
the web. We can make such strings significantly lighter by having a
1-character inline capacity on the Vectors.
2021-10-02 17:39:38 +02:00
Luke Wilde
ae0bdda86e LibJS: Remove read buffer overflow in Lexer::consume
The position is added to manually in the line terminator and Unicode
character cases. While it checks for EOF after doing so, the EOF check
used `!=` instead of `<`, meaning if the position went _over_ the
source length, it wouldn't think it was EOF and would cause read buffer
overflows.

For example, `0xea` followed by `0xfd` would cause this.
2021-10-02 17:16:09 +02:00
Andreas Kling
bb6634b024 LibRegex: Don't emit signpost events for every regular expression
The time we were spending on these signposts was adding up to way too
much, so let's not do it automatically.
2021-10-02 16:53:03 +02:00
Andreas Kling
6a1b82df2b LibJS: Put zombie cell tracking code behind a compile-time flag
Since this is a debug-only feature, let's not have it impact GC marking
performance when you don't need it.
2021-10-02 16:39:28 +02:00
Andreas Kling
f290c59dd8 LibJS: Keep track of PrimitiveStrings and share them
VM now has a string cache which tracks all live PrimitiveStrings and
reuses an existing one if possible. This drastically reduces the number
of GC-allocated strings in many real-word situations.
2021-10-02 16:39:28 +02:00
Linus Groh
ba6e4c7ae1 LibJS+LibWeb: Use Object::set_prototype() in more places 2021-10-02 14:53:06 +01:00
Linus Groh
84c9f3e0d0 LibJS: Add Object::set_prototype()
This is just factoring out step "9. Set O.[[Prototype]] to V." of
10.1.2 [[SetPrototypeOf]] into its own method so that we don't have to
use internal_set_prototype_of() for setting an object prototype in all
cases.
2021-10-02 14:53:06 +01:00
Linus Groh
c500ebdcd5 LibWeb: Implement Navigator.cookieEnabled 2021-10-02 13:55:19 +01:00
Idan Horowitz
a4bc3fa255 LibWeb: Initialize IDL-generated prototypes' prototype directly
Instead of setting it to the default object prototype and then
immediately setting it again via internal_set_prototype_of, we can just
set it directly in the parent constructor call.
2021-10-02 13:23:59 +01:00