Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

FileManager: Opening a symlink to a directory causes crash #21

Closed
awesomekling opened this issue May 1, 2019 · 1 comment
Closed

FileManager: Opening a symlink to a directory causes crash #21

awesomekling opened this issue May 1, 2019 · 1 comment
Labels
bug Something isn't working

Comments

@awesomekling
Copy link
Contributor

Easy repro: Try to open /proc/self

@awesomekling awesomekling added the bug Something isn't working label May 1, 2019
@awesomekling
Copy link
Contributor Author

It's crashing in the forked process because it thinks /proc/self is an executable program, and it tries to run it.
FileManager should realize it's a directory and open it instead.

ebanner added a commit to ebanner/serenity that referenced this issue Feb 7, 2023
# This is the 1st commit message:

HexEditor: Will this resolve merge conflicts?

# This is the commit message #2:

Browser: Disallow empty URLs in the bookmark editor

When an empty URL is given to `BookmarkEditor`, it will now
disable the button that saves the bookmark change since an empty
URL is an invalid URL.

# This is the commit message #3:

Kernel: Change the way we call a syscall in signal_trampoline_dummy

The function signal_trampoline_dummy was using int 0x82 to call
SC_sigreturn. Since x86 is no longer supported, the correct way
to call a syscall is using the syscall instruction.

This paves the way to remove the syscall trap handling mechanism.

# This is the commit message SerenityOS#4:

Kernel: Remove trap based syscall handling

This patch removes the x86 mechanism for calling syscalls, favoring
the more modern syscall instruction. It also moves architecture
dependent code from functions that are meant to be architecture
agnostic therefore paving the way for adding more architectures.

# This is the commit message SerenityOS#5:

Documentation: Add troubleshooting note regarding KVM GDB

# This is the commit message SerenityOS#6:

Kernel: Fix a long-standing problem with GMBus in Intel Grahpics code

Thanks to Andrew Kaster, which gave a review back in October, about a
big PR I opened (SerenityOS#15502), I managed to figure out why we always had a
problem with the first byte being read into the EDID buffer with the
GMBus code. It turns out that this simple invalid cast was making the
entire problem and using the correct AK::Array::data() method fixed this
notorious long standing problem for good.

# This is the commit message SerenityOS#7:

Kernel: Split I2C functionality from IntelNativeDisplayConnector code

Splitting the I2C-related code lets the DisplayConnector code to utilize
I2C operations without caring about the specific details of the hardware
and allow future expansion of the driver to other newer generations
sharing the same GMBus code.

We should require a timeout for GMBus operations always, because faulty
hardware could let us just spin forever. Also, if nothing is listening
to the bus (which should result in a NAK), we could also spin forever.

# This is the commit message SerenityOS#8:

Kernel/Graphics: Export DDC I2C address definition to global header file

# This is the commit message SerenityOS#9:

SQLServer: Unveil /etc/passwd

This is now required to launch the SQLServer for Browser (without
this it now fails to launch).

# This is the commit message SerenityOS#10:

LibGUI: Add allowed file extensions to FileSystemModel

This allows FileSystemModel to take an optional list of allowed file
extensions which it will use to filter out all files that don't end
with that file extension.

The file extensions are set via `set_allowed_file_extensions` which has
a coresponding `get_allowed_file_extensions`.

# This is the commit message SerenityOS#11:

LibGUI: Add allowed file types to FilePicker

This patch adds a ComboBox to `FilePicker` where the user can select
which file types to show, all files that doesn't have an
extension that's in the selected file type will be hidden.

When creating a FilePicker with `FilePicker::construct` or
`FilePicker::get_open_filepath`, allowed file types can be
specified as the last argument.

If no file types are provided then there will be no visual change in the
GUI.

'All Files' and 'Image Files' have shorthands with
`GUI::FileTypeFilter::all_files()` and
`GUI::FileTypeFilter::image_files()`, respectively.

# This is the commit message SerenityOS#12:

DisplaySettings: Made select wallpaper use allowed file types

# This is the commit message SerenityOS#13:

Ladybird: Left-align long url in address bar

Previously when there was a very long url that spanned outside of the
address bar, the text shown would be the one starting from the very end
of the url instead of from the beginning, so you would be seeing the
query parameters for example, instead of the domain.

# This is the commit message SerenityOS#14:

LibJS: Format the era of ISO year 0 as BC

This is a normative change in the ECMA-402 spec. See:
tc39/ecma402@2034315

# This is the commit message SerenityOS#15:

LibGUI: Don't hard-code TreeView row height

Instead of overriding AbstractTableView::row_height() and returning a
hard-coded height for some reason, just remove the override.

This makes tree view row heights honor the current font size.

# This is the commit message SerenityOS#16:

LibGUI: Invalidate IconView cache on font change

Changing the font means we have to recalculate all the item rects etc.

# This is the commit message SerenityOS#17:

LibGUI: Relayout Breadcrumbbar on font change

# This is the commit message SerenityOS#18:

LibGUI: Make Tray item height honor the current font size

# This is the commit message SerenityOS#19:

LibWeb: Restore handling of the serenity:ladybird/headless capability

This was refactored a bit incorrectly in d8fde14.

# This is the commit message SerenityOS#20:

Ladybird: Abstract spawning helper processes into separate methods

This will let us use the same path discovery methods for WebContent,
SQLServer, and any other helper processes we need to launch.

# This is the commit message SerenityOS#21:

LibSQL+Ladybird: Accept a list of paths for spawning SQLServer in Lagom

Use the new get_paths_for_helper_process method in Ladybird to query
Qt for the runtime path of the current executable as well as the build
directory paths.

# This is the commit message SerenityOS#22:

Meta+CI: Disable Ladybird for fuzzer, compiler explorer and Android

And move it after the declaration of headless-browser, since WebDriver
depends on headless-browser.

# This is the commit message SerenityOS#23:

Ladybird: Clean up install rules for executables

Use a list of executables to make sure that we don't miss any of the
applications used by Ladybird and its friends like WebDriver, and make
sure to install include all executables and their runtime dependencies.

# This is the commit message SerenityOS#24:

Ladybird: Spawn ladybird and headless-browser using helpers in WebDriver

This allows the WebDriver to take advantage of the common helper process
spawning code when launching ladybird, and to not assume a particular
directory layout.

# This is the commit message SerenityOS#25:

Meta: Add Erik Wouters to the contributors list :^)

# This is the commit message SerenityOS#26:

Meta: Add Rodrigo Tobar to the contributors list :^)

# This is the commit message SerenityOS#27:

Meta: Add Martin Falisse to the contributors list :^)

With a slight delay, but hopefully inserted at the right position for
correct historical order.

# This is the commit message SerenityOS#28:

FileSystemAccessServer: Send correct error code for failed file access

When a file cannot be accessed, we currently send errno as the error
code. However, there are system calls which occur (by way of dbgln)
between the failed file access and accessing errno. This prevents the
client-side detection of ENOENT from working.

Instead, send over the error we already have stored in the ErrorOr
object.

# This is the commit message SerenityOS#29:

Profiler: Standardize percentage formatting

This implements the same percentage formatting for the disassembly and
flamegraph views as we have for the profile model.

# This is the commit message SerenityOS#30:

LibSoftGPU: Make blending simpler and more efficient

Previously, we would precalculate "alpha blend factors" on every
configuration update and then calculate the source and destination
blending factors in one go using all these factors. The idea here was
probably that we would get better performance by avoiding branching.

However, by measuring blending performance in Quake III, it seems that
this simpler version that only calculates the required factors reduces
the CPU time spent in `rasterize_triangle` by 3%.

As a bonus, `GL_SRC_ALPHA_SATURATE` is now also implemented.

# This is the commit message SerenityOS#31:

Ports: Add bind mount automatically for Quake3

We need a `wxallowed` bind mount for the `ioquake3` binary to be able to
compile and run its executable scripts in memory. Instead of instructing
the user how to do so in `/etc/fstab`, we can now use the fancy
`/etc/fstab.d` facility :^)

# This is the commit message SerenityOS#32:

LibSoftGPU: Only enable texture stages if required

Copying over every texel (4x`f32x4`) for every texture unit is
relatively expensive. By checking if we even need to remember these
texel values, we reduce the time spent in `rasterize_triangle` by
around 2% as measured in Quake III.

# This is the commit message SerenityOS#33:

Ports: Install all dependencies instead of just one

Commit 9b7e217 broke installation of port dependencies by
`return`ing as soon as the first dependency was found.

# This is the commit message SerenityOS#34:

PixelPaint: Set initial position correctly when using the move tool

This fixes an issue, where single clicking in the corner of the image
without moving the mouse would cause the layer to jump to the top left
corner of the canvas.

# This is the commit message SerenityOS#35:

PixelPaint: Highlight active layer when using the move tool

This commit adds a two color border around the currently selected
layer when using the move tool.

# This is the commit message SerenityOS#36:

PixelPaint: Show resize anchors when using the move tool

This commit adds a two color border around areas that the user must
drag to resize, when using the move tool.

# This is the commit message SerenityOS#37:

PixelPaint: Scale move tool resize anchors

The areas where the user must click to resize the image are now
scaled to ensure they do not overlap. This allows us to display the
correct cursor when zoomed out, as well as making the
borders look nicer.

# This is the commit message SerenityOS#38:

LibWeb+LibWebSocket: DOM WebSocket subprotocol support

This adds support for WebSocket subprotocols to WebSocket DOM
objects, with some necessary plumbing to LibWebSocket and its
clients.

See the associated pull request for how this was tested.

# This is the commit message SerenityOS#39:

PixelPaint: Update text tool font color on primary color change

# This is the commit message SerenityOS#40:

LibWeb: Actually initialize ShadowRoot bindings

`mode` and `host` attributes were always undefined.

# This is the commit message SerenityOS#41:

LibWeb: Make ShadowRoot.mode return ShadowRootMode instead of String

# This is the commit message SerenityOS#42:

LibWeb: Rename DOM::shadow_root() to shadow_root_internal()

The shadowRoot property getter that will be added in subsequent commits
has an additional check that checks whether the shadow root is opened.
I didn't update the function logic to match with the IDL interface,
because it's very likely we don't want that check in the existing code,
so that for example closed shadow root elements can still be updated.

# This is the commit message SerenityOS#43:

LibWeb: Add a helper function for checking if element is a shadow host

# This is the commit message SerenityOS#44:

LibWeb: Allow to set a root mode value when constructing a ShadowRoot

# This is the commit message SerenityOS#45:

LibWeb: Implement Element.attachShadow and Element.shadowRoot :^)

# This is the commit message SerenityOS#46:

Piano: Propagate errors in PlayerWidget

Co-authored-by: Sam Atkins <atkinssj@serenityos.org>

# This is the commit message SerenityOS#47:

LibGUI: Center TreeView item icons vertically

This makes tree views with icons look a lot better at larger font sizes.

# This is the commit message SerenityOS#48:

LibGUI: Merge two loops over the segments in Breadcrummbar::relayout()

# This is the commit message SerenityOS#49:

LibGUI: Use the correct font when relayouting Breadcrumbbar

When the system is broadcasting a "system font changed" notification,
the Breadcrumbbar will be notified before its button children. This
means that we have to use the Breadcrumbbar's font() for calculations
inside Breadcrumbbar as the buttons themselves still have the old font
at this point.

# This is the commit message SerenityOS#50:

LibPDF: Stop storing unicode code points in Encoding

In PDF's fonts, encoding objects are used to translate bytes into fonts'
glyphs. Glyphs (in the fonts we currently support) organise their glyphs
in such a way that they are accessed by name, and thus encoding
translate between a byte sequence and a glyph name.

Note that an no point this translation includes a Unicode character, and
therefore assigning a character to a glyph in the Encoding object is the
wrong thing to do. Moreover, using the code point for this character
during the byte-sequence-to-glyph translation sequence is double-wrong.

This commit removes the characters associated to each translation in the
built-in Encoding objects. In order to keep commits short and sweet, I'm
currently simply removing the character from the enumeration, leaving
the old structure this information was held on intact. Instead, I'm
filling the "code_point" member with a zero, and filling both mappings
(which will be changed later on too) with the glyph name and the
associated char code.

# This is the commit message SerenityOS#51:

LibPDF: Fix ZapfDingbat's char codes

The initial values were fine, but those starting at 100 were wrong: they
are all octal values, but since they were missing an initial 0 they were
interpreted as decimals.

# This is the commit message SerenityOS#52:

LibPDF: Stop calculating code points for glyphs

When rendering text, a sequence of bytes corresponds to a glyph, but not
necessarily to a character. This misunderstanding permeated through the
Encoding through to the Font classes, which were all trying to calculate
such values. Moreover, this was done only to identify "space"
characters/glyphs, which were getting a special treatment (e.g., avoid
rendering). Spaces are not special though -- there might be fonts that
render something for them -- and thus should not be skipped

# This is the commit message SerenityOS#53:

LibPDF: Simplify Encoding to align with simple font requirements

All "Simple Fonts" in PDF (all but Type0 fonts) have the property that
glyphs are selected with single byte character codes. This means that
the Encoding objects should use u8 for representing these character
codes. Moreover, and as mentioned in a previous commit, there is no need
to store the unicode code point associated with a character (which was
in turn wrongly associated to a glyph).

This commit greatly simplifies the Encoding class. Namely it:

 * Removes the unnecessary CharDescriptor class.
 * Changes the internal maps to be u8 -> FlyString and vice-versa,
   effectively providing two-way lookups.
 * Adds a new method to set a two-way u8 -> FlyString mapping and uses
   it in all possible places.
 * Simplified the creation of Encoding objects.
 * Changes how the WinAnsi special treatment for bullet points is
   implemented.

# This is the commit message SerenityOS#54:

GamesSettings: Rename `Preview` -> `CardGamePreview`

# This is the commit message SerenityOS#55:

GamesSettings: Make CardSettingsWidget creation fallible

# This is the commit message SerenityOS#56:

Chess: Stop trying to read non-existent window-size config value

Nobody ever sets this, and it doesn't seem especially useful, so let's
remove it.

# This is the commit message SerenityOS#57:

Chess: Move configuration values into the "Games" domain

Chess is a game, after all. This makes more sense once we have chess
settings in GamesSettings. :^)

# This is the commit message SerenityOS#58:

Chess: Stop hiding the frame border

This `fill_rect()` call was covering the nice border that we just
painted a few lines earlier.

# This is the commit message SerenityOS#59:

Chess: Paint pieces using BilinearBlend instead of NearestNeighbor

This makes the pieces look a lot nicer when the window isn't the exactly
ideal size. Vector images might be worth pursuing later.

# This is the commit message SerenityOS#60:

GamesSettings: Add chess settings :^)

This adds a tab for configuring the appearance of Chess, along with a
preview.

# This is the commit message SerenityOS#61:

Chess: Automatically update and repaint when the config changes

# This is the commit message SerenityOS#62:

Chess: Replace 'Style' menu with a link to GamesSettings

GamesSettings provides a nicer way of editing these, rather than having
them crammed into a menu.

# This is the commit message SerenityOS#63:

CMake: Set DWARF version before the debug information level

Setting the DWARF version after having selected which level of debug
information to generate apparently undoes some settings again.

Doing the reverse apparently keeps both the version and the debug level
setting, resulting in a significantly smaller disk image size.

# This is the commit message SerenityOS#64:

AK: Return a constant reference from HashMap's constant get() override

We cannot return a mutable reference from a constant function.

# This is the commit message SerenityOS#65:

AK: Ensure string types are actually considered hash-compatible

The AnyString concept is currently broken because it checks whether a
StringView is constructible from a type T. The StringView constructors,
however, only accept constant rvalue references - i.e. `T const&`.

This also adds a test to ensure this continues to work.

# This is the commit message SerenityOS#66:

AK: Define HashMap::take to find and remove a value from the map

# This is the commit message SerenityOS#67:

WebContent: Remove pending file requests before invoking their callbacks

It's currently possible for the callback of a file request to request
more file objects. This could cause the hash map storing these requests
to be rehashed while one of its callbacks is being invoked. AK::Function
explicitly forbids this with an assertion.

Instead, remove the callback from the hash map before invoking the
callback function.

# This is the commit message SerenityOS#68:

LibVideo/VP9: Increase the size of summed boolean counts in merge_probs

This fixes an issue where probabilities that sum to greater than 255
would wrap and cause the maximum probability adaption to take effect.

# This is the commit message SerenityOS#69:

LibVideo/VP9: Correct the mode/partition probability adaption counts

# This is the commit message SerenityOS#70:

LibVideo/VP9: Prevent negation overflow in BitStream::read_s

# This is the commit message SerenityOS#71:

LibVideo/VP9: Use u32 to store the parsed value counts

There were rare cases in which u8 was not large enough for the total
count of values read, and increasing this to u32 should have no real
effect on performance (hopefully).

# This is the commit message SerenityOS#72:

LibVideo/VP9: Use proper indices for updating inter_mode probabilities

I previously changed it to use the absolute inter-prediction mode
values instead of the ones relative to NearestMv. That caused the
probability adaption to take invalid indices from the counts and broke
certain videos.

Now it will just convert to the PredictionMode enum when returning from
parse_inter_mode, which allows us to still use it the same as before.

# This is the commit message SerenityOS#73:

Ladybird: Design settings layout in horizontal

# This is the commit message SerenityOS#74:

Ladybird: Add setting for page to open on new tab

# This is the commit message SerenityOS#75:

Ladybird: Set fixed height for Settings

# This is the commit message SerenityOS#76:

Utilities/arp: Replace uses of JsonObject::get_deprecated()/get_ptr()

# This is the commit message SerenityOS#77:

Utilities/df: Replace uses of JsonObject::get_deprecated()/get_ptr()

# This is the commit message SerenityOS#78:

Utilities/fortune: Replace uses of JsonObject::get_deprecated()/get_ptr

# This is the commit message SerenityOS#79:

Utilities/ifconfig: Replace uses of JsonObject::get_deprecated()/get_ptr

# This is the commit message SerenityOS#80:

Utilities/json: Replace uses of JsonObject::get_deprecated()/get_ptr()

# This is the commit message SerenityOS#81:

Utilities/lscpu: Replace uses of JsonObject::get_deprecated()/get_ptr()

# This is the commit message SerenityOS#82:

Utilities/lsirq: Replace uses of JsonObject::get_deprecated()/get_ptr()

# This is the commit message SerenityOS#83:

Utilities/lsjails: Replace uses of JsonObject::get_deprecated()/get_ptr

# This is the commit message SerenityOS#84:

Utilities/lsof: Replace uses of JsonObject::get_deprecated()/get_ptr()

# This is the commit message SerenityOS#85:

Utilities/lsusb: Replace uses of JsonObject::get_deprecated()/get_ptr()

# This is the commit message SerenityOS#86:

Utilities/mount: Replace uses of JsonObject::get_deprecated()/get_ptr()

# This is the commit message SerenityOS#87:

Utilities/netstat: Replace uses of JsonObject::get_deprecated()/get_ptr

# This is the commit message SerenityOS#88:

Utilities/pmap: Replace uses of JsonObject::get_deprecated()/get_ptr()

# This is the commit message SerenityOS#89:

Utilities/route: Replace uses of JsonObject::get_deprecated()/get_ptr()

# This is the commit message SerenityOS#90:

Utilities/w: Replace uses of JsonObject::get_deprecated()/get_ptr()

# This is the commit message SerenityOS#91:

AK: Remove JsonObject::get_deprecated() and ::get_ptr() :^)

# This is the commit message SerenityOS#92:

Settings: Change initial window size to fit the current content

Previously, it would open with a scrollbar visible which felt a little
silly. :^)

# This is the commit message SerenityOS#93:

LibWeb: Parse font-stretch CSS property

# This is the commit message SerenityOS#94:

Base: Add British English Apple Macintosh keymap

Full support for EN-GB Mac Laptop and Magic Keyboards

# This is the commit message SerenityOS#95:

Kernel: Fix usermode verification in ptrace with PT_SETREGS

When doing PT_SETREGS, we want to verify that the debugged thread is
executing in usermode.

b2f7ccf refactored things and flipped the relevant check around, which
broke things that use PT_SETREGS (for example, stepping over
breakpoints with sdb).

# This is the commit message SerenityOS#96:

AK: Implement the quick select algorithm as AK::quickselect_inplace

This adds the quick select algorithm that finds
the kth smallest element for any collection.
Whilst doing so it also partially sorts the collection.
I have also included the option to use different pivoting functions
including median of medians which makes the quick select have
a truely linear time complexity at the costs of enormous overhead,
so this that only really useful for really large datasets.
The same was chosen to reflect the fact that it modifies
the collection in place during the selection process.

# This is the commit message SerenityOS#97:

AK: Testing for `AK::quickselect_inline`

The testing code found here is mainly derived from the Tests for
`AK::quick_sort`.

# This is the commit message SerenityOS#98:

AK: Use `AK:quickselect_inline` to compute `AK::Statistics::median`

Quick select is an algorithm that is able to find the median
of a Vector without fully sorting it.
This replaces the old very naive implementation
for `AK::Statistics::median()` with `AK::quickselect_inline`

# This is the commit message SerenityOS#99:

AK: Add thresholds to `quickselect_inline` and `Statistics::Median`

I did a bit of Profiling and made the quickselect and median algorithms
use the best of option for the respective input size.

# This is the commit message SerenityOS#100:

SystemServer: Propagate errors properly in the main code

To do this properly, we also create Strings with formatting of device
nodes' names, taking into consideration errors when doing that.
Also, we use LibCore System mknod method instead of raw LibC functions
to be able to propagate errors from these calls too.

# This is the commit message SerenityOS#101:

grep: Port to `Core::Stream`

It also adds support for `ErrorOr` in one lambda.

# This is the commit message SerenityOS#102:

TextEditor: Port to `Core::Stream`

# This is the commit message SerenityOS#103:

TextEditor: Use `request_file_read_only_approved` for the drop event

This allows TextEditor to open the file without asking for user consent.

# This is the commit message SerenityOS#104:

TextEditor: Propagate errors from `read_file()`

# This is the commit message SerenityOS#105:

Kernel/aarch64: Include Error.h to fix aarch64 missing ErrorOr

# This is the commit message SerenityOS#106:

LibSQL: Store selected column names in the results for SELECT statements

# This is the commit message SerenityOS#107:

LibSQL+Userland: Pass SQL IPC results to clients in a structure

SQLClient exists as a wrapper around SQL IPC to provide a bit friendlier
interface for clients to deal with. Though right now, it mostly forwards
values as-is from IPC to the clients. This makes it a bit verbose to add
values to IPC responses, as we then have to add it to the callbacks used
by all clients. It's also a bit confusing seeing a sea of "auto" as the
parameter types for these callbacks.

This patch moves these response values to named structures instead. This
will allow adding values without needing to simultaneously update all
clients. We can then separately handle the new values in interested
clients only.

# This is the commit message SerenityOS#108:

LibSQL+SQLServer: Send result column names over IPC to SQL clients

# This is the commit message SerenityOS#109:

SQLStudio: Separate the script and results tabs with a vertical splitter

# This is the commit message SerenityOS#110:

SQLStudio: Display real column names in the results tab

# This is the commit message SerenityOS#111:

LibWeb: Fix typo and use auto where possible

# This is the commit message SerenityOS#112:

Meta: Register CanvasPattern as a platform object

# This is the commit message SerenityOS#113:

LibWeb: Implement CanvasRenderingContext2D.createPattern()

This is a first pass at implementing CRC2D.createPattern() and the
associated CanvasPattern object. This implementation only works for a
few of the required image sources [like CRC2D.drawImage()], and does
not yet support transforms. Other than that it supports everything
else (which is mainly the various repeat modes).

# This is the commit message SerenityOS#114:

Base: Add a test page for canvas patterns

# This is the commit message SerenityOS#115:

SpaceAnalyzer: Extract ProgressWindow into its own class

# This is the commit message SerenityOS#116:

SpaceAnalyzer: Propagate more errors

# This is the commit message SerenityOS#117:

SpaceAnalyzer: Make TreeMapWidget responsible for filesystem analysis

Also, the Tree object was only ever used by the TreeMapWidget, so its
creation can happen inside `analyze()`, fixing the memory leak issue.
Plus, it doesn't have to be RefCounted.

# This is the commit message SerenityOS#118:

SpaceAnalyzer: Give the Analyze action an icon and F5 shortcut

This action is basically equivalent to "Refresh", so let's use the
common shortcut for that.

# This is the commit message SerenityOS#119:

SpaceAnalyzer: Rename `TreeMapWidget::m_path` -> `m_path_segments`

This is clearer to me at least.

# This is the commit message SerenityOS#120:

SpaceAnalyzer: Stop treating selecting a node as a path change

This served no obvious purpose, but did make the breadcrumb bar change
confusingly.

# This is the commit message SerenityOS#121:

SpaceAnalyzer: Rename widget variables to match code style

# This is the commit message SerenityOS#122:

Base: Fix typo of MasterWrod.af

MasterWrod.af becomes MasterWord.af - too small a change?

# This is the commit message SerenityOS#123:

Base: Add more emoji

🤳 - U+1F933 SELFIE
🏄 - U+1F3C4 PERSON SURFING
🏄‍♂️ - U+1F3C4 U+200D U+2642 MAN SURFING
🏄‍♀️ - U+1F3C4 U+200D U+2640 WOMAN SURFING
🥋 - U+1F94B MARTIAL ARTS UNIFORM
🚭 - U+1F6AD NO SMOKING
📴 - U+1F4F4 MOBILE PHONE OFF

# This is the commit message SerenityOS#124:

Chess+GamesSettings: Use the correct term for chess squares

"Square" is the technical term, so let's use it. :^)

Also, stop using size_t for pixel sizes, that's not what that means.

# This is the commit message SerenityOS#125:

Chess+GamesSettings: Give chess pieces some breathing room

Draw pieces around 80% of the size of a square, instead of 100%, so that
there is a nice gap around them. This feels more comfy, and makes it
actually possible to read the coordinates while a piece is on their
square.

# This is the commit message SerenityOS#126:

Base: Delete the "test" chess piece set

We have several nice sets to choose from now, and so we no longer need
this one, which is "ugly" even according to its original author. ;^)

# This is the commit message SerenityOS#127:

LibPDF: Fix clipping of painting operations

While the clipping logic was correct (current v/s new clipping path),
the clipping path contents weren't. This commit fixed that.

We calculate the clipping path in two places: when we set it to be the
whole page at graphics state creation time, and when we perform clipping
path intersection to calculate a new clipping path. The clipping path is
then used to limit painting by passing it to the painter (more
precisely, but passing its bounding box to the painter, as the latter
doesn't support arbitrary path clipping). For this last point the
clipping path must be in device coordinates.

There was however a mix of coordinate systems involved in the creation,
update and usage of the clipping path:

 * The initial values of the path (i.e., the whole page) were in user
   coordinates.
 * Clipping path intersection was performed against m_current_path,
   which is in device coordinates.
 * To perform the clipping operation, the current clipping path was
   assumed to be in user coordinates.

This mix resulted in the clipping not working correctly depending on the
zoom level at which one visualised a page.

This commit fixes the issue by always keeping track of the clipping path
in device coordinates. This means that the initial full-page contents
are now converted to device coordinates before putting them in the
graphics state, and that no mapping is performed when applied the
clipping to the painter.

# This is the commit message SerenityOS#128:

Documentation: Reorganize Ladybird build docs to put easy path first

Instead of explaining custom build directories first and then following
that up with a an explainer that Meta/serenity.sh is the easiest way to
get the browser up and running to try it out was not very ergonmic.

Also reorganize some of the per-distro documentation to put the compiler
requirements front and center.

# This is the commit message SerenityOS#129:

Kernel+SystemServer+Base: Introduce the RAMFS filesystem

This filesystem is based on the code of the long-lived TmpFS. It differs
from that filesystem in one keypoint - its root inode doesn't have a
sticky bit on it.

Therefore, we mount it on /dev, to ensure only root can modify files on
that directory. In addition to that, /tmp is mounted directly in the
SystemServer main (start) code, so it's no longer specified in the fstab
file. We ensure that /tmp has a sticky bit and has the value 0777 for
root directory permissions, which is certainly a special case when using
RAM-backed (and in general other) filesystems.

Because of these 2 changes, it's no longer needed to maintain the TmpFS
filesystem, hence it's removed (renamed to RAMFS), because the RAMFS
represents the purpose of this filesystem in a much better way - it
relies on being backed by RAM "storage", and therefore it's easy to
conclude it's temporary and volatile, so its content is gone on either
system shutdown or unmounting of the filesystem.

# This is the commit message SerenityOS#130:

Documentation: Add formatting section to nvim documenation

# This is the commit message SerenityOS#131:

Lagom/ConfigureComponents: Run cmake command last

Previously the tool was removing the Root directory after configuring
cmake which was breaking the build, as some cmake rules put some
necessary files there.

Moving the cmake command to be the last one makes it regenerate those
files automatically. :^)

# This is the commit message SerenityOS#132:

CMake: Don't require to install glapi.h to system

This failed when a current build configuration hadn't got any program
depending on LibGL.

# This is the commit message SerenityOS#133:

Utilities: Rename special target binaries only if they exist

Before 6490529, all programs in the
SPECIAL_TARGETS list were built because they didn't have an
EXCLUDE_FROM_ALL property set.

That commit set the property for all targets, but because of this, the
minimal "Required" build configuration no longer built, as CMake failed
to rename every special target. Even the not built ones.

This commit makes the rename action run only if the executable exists,
which makes us build Serenity without the `install` utility, and also
by using the minimal configuration set. :^) :^)

# This is the commit message SerenityOS#134:

Base: Add a quote to the fortunes database

t.how.does.it.even.workis /shrug

# This is the commit message SerenityOS#135:

AK: Use constexpr instead of consteval on OpenBSD

# This is the commit message SerenityOS#136:

HexEditor: Add a default move constructor to `HexDocumentFile`

# This is the commit message SerenityOS#137:

HexEditor: Use the constructor pattern
filiphsps pushed a commit to filiphsps/serenity-fork that referenced this issue Jun 30, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
None yet
Development

No branches or pull requests

1 participant