Explorar o código

Everywhere: Split Error::from_string_literal and Error::from_string_view

Error::from_string_literal now takes direct char const*s, while
Error::from_string_view does what Error::from_string_literal used to do:
taking StringViews. This change will remove the need to insert `sv`
after error strings when returning string literal errors once
StringView(char const*) is removed.

No functional changes.
sin-ack %!s(int64=3) %!d(string=hai) anos
pai
achega
e5f09ea170
Modificáronse 51 ficheiros con 282 adicións e 261 borrados
  1. 13 1
      AK/Error.h
  2. 28 28
      AK/JsonParser.cpp
  3. 1 1
      AK/Stream.h
  4. 17 17
      Meta/Lagom/Tools/CodeGenerators/LibEDID/GeneratePnpIDs.cpp
  5. 15 7
      Meta/Lagom/Tools/CodeGenerators/LibUnicode/GeneratorUtil.h
  6. 1 1
      Userland/Applets/ResourceGraph/main.cpp
  7. 5 5
      Userland/Applications/PixelPaint/Image.cpp
  8. 3 3
      Userland/Applications/PixelPaint/Layer.cpp
  9. 6 6
      Userland/DevTools/HackStudio/ProjectBuilder.cpp
  10. 1 1
      Userland/DevTools/HackStudio/TerminalWrapper.cpp
  11. 4 4
      Userland/DevTools/Profiler/Profile.cpp
  12. 1 1
      Userland/Libraries/LibAudio/FlacLoader.cpp
  13. 6 6
      Userland/Libraries/LibCore/Account.cpp
  14. 1 1
      Userland/Libraries/LibCore/Command.cpp
  15. 4 4
      Userland/Libraries/LibCore/FilePermissionsMask.cpp
  16. 1 1
      Userland/Libraries/LibCore/LocalServer.cpp
  17. 3 3
      Userland/Libraries/LibCore/MemoryStream.h
  18. 2 2
      Userland/Libraries/LibCore/SOCKSProxyClient.cpp
  19. 2 2
      Userland/Libraries/LibCore/SharedCircularQueue.h
  20. 2 1
      Userland/Libraries/LibCore/Stream.cpp
  21. 2 2
      Userland/Libraries/LibCore/SystemServerTakeover.cpp
  22. 4 4
      Userland/Libraries/LibDesktop/Launcher.cpp
  23. 15 15
      Userland/Libraries/LibEDID/EDID.cpp
  24. 1 1
      Userland/Libraries/LibFileSystemAccessClient/Client.cpp
  25. 6 6
      Userland/Libraries/LibGUI/GML/Parser.cpp
  26. 1 1
      Userland/Libraries/LibGUI/Icon.cpp
  27. 3 3
      Userland/Libraries/LibGfx/BMPLoader.cpp
  28. 9 9
      Userland/Libraries/LibGfx/Bitmap.cpp
  29. 3 3
      Userland/Libraries/LibGfx/DDSLoader.cpp
  30. 23 23
      Userland/Libraries/LibGfx/Font/TrueType/Font.cpp
  31. 13 13
      Userland/Libraries/LibGfx/Font/WOFF/Font.cpp
  32. 3 3
      Userland/Libraries/LibGfx/GIFLoader.cpp
  33. 3 3
      Userland/Libraries/LibGfx/ICOLoader.cpp
  34. 3 3
      Userland/Libraries/LibGfx/JPGLoader.cpp
  35. 17 17
      Userland/Libraries/LibGfx/PNGLoader.cpp
  36. 3 3
      Userland/Libraries/LibGfx/PortableImageMapLoader.h
  37. 17 17
      Userland/Libraries/LibGfx/QOILoader.cpp
  38. 1 1
      Userland/Libraries/LibGfx/ShareableBitmap.cpp
  39. 5 5
      Userland/Libraries/LibIPC/Connection.cpp
  40. 3 3
      Userland/Libraries/LibIPC/Decoder.h
  41. 3 3
      Userland/Libraries/LibSQL/Database.cpp
  42. 16 16
      Userland/Libraries/LibSQL/Heap.cpp
  43. 2 2
      Userland/Libraries/LibTLS/Socket.cpp
  44. 3 3
      Userland/Libraries/LibTLS/TLSv12.h
  45. 1 1
      Userland/Libraries/LibWasm/AbstractMachine/Validator.h
  46. 1 1
      Userland/Services/DHCPClient/DHCPv4Client.cpp
  47. 1 1
      Userland/Services/WindowServer/VirtualScreenBackend.cpp
  48. 1 1
      Userland/Utilities/du.cpp
  49. 1 1
      Userland/Utilities/matroska.cpp
  50. 1 1
      Userland/Utilities/pls.cpp
  51. 1 1
      Userland/Utilities/strace.cpp

+ 13 - 1
AK/Error.h

@@ -24,7 +24,19 @@ class Error {
 public:
     static Error from_errno(int code) { return Error(code); }
     static Error from_syscall(StringView syscall_name, int rc) { return Error(syscall_name, rc); }
-    static Error from_string_literal(StringView string_literal) { return Error(string_literal); }
+    static Error from_string_view(StringView string_literal) { return Error(string_literal); }
+
+    // NOTE: Prefer `from_string_literal` when directly typing out an error message:
+    //
+    //     return Error::from_string_literal("Class: Some failure");
+    //
+    // If you need to return a static string based on a dynamic condition (like
+    // picking an error from an array), then prefer `from_string_view` instead.
+    template<size_t N>
+    ALWAYS_INLINE static Error from_string_literal(char const (&string_literal)[N])
+    {
+        return from_string_view(StringView { string_literal, N - 1 });
+    }
 
     bool operator==(Error const& other) const
     {

+ 28 - 28
AK/JsonParser.cpp

@@ -20,7 +20,7 @@ constexpr bool is_space(int ch)
 ErrorOr<String> JsonParser::consume_and_unescape_string()
 {
     if (!consume_specific('"'))
-        return Error::from_string_literal("JsonParser: Expected '\"'"sv);
+        return Error::from_string_literal("JsonParser: Expected '\"'");
     StringBuilder final_sb;
 
     for (;;) {
@@ -33,7 +33,7 @@ ErrorOr<String> JsonParser::consume_and_unescape_string()
             if (ch == '"' || ch == '\\')
                 break;
             if (is_ascii_c0_control(ch))
-                return Error::from_string_literal("JsonParser: Error while parsing string"sv);
+                return Error::from_string_literal("JsonParser: Error while parsing string");
             ++peek_index;
         }
 
@@ -102,20 +102,20 @@ ErrorOr<String> JsonParser::consume_and_unescape_string()
         if (next_is('u')) {
             ignore();
             if (tell_remaining() < 4)
-                return Error::from_string_literal("JsonParser: EOF while parsing Unicode escape"sv);
+                return Error::from_string_literal("JsonParser: EOF while parsing Unicode escape");
 
             auto code_point = AK::StringUtils::convert_to_uint_from_hex(consume(4));
             if (code_point.has_value()) {
                 final_sb.append_code_point(code_point.value());
                 continue;
             }
-            return Error::from_string_literal("JsonParser: Error while parsing Unicode escape"sv);
+            return Error::from_string_literal("JsonParser: Error while parsing Unicode escape");
         }
 
-        return Error::from_string_literal("JsonParser: Error while parsing string"sv);
+        return Error::from_string_literal("JsonParser: Error while parsing string");
     }
     if (!consume_specific('"'))
-        return Error::from_string_literal("JsonParser: Expected '\"'"sv);
+        return Error::from_string_literal("JsonParser: Expected '\"'");
 
     return final_sb.to_string();
 }
@@ -124,7 +124,7 @@ ErrorOr<JsonValue> JsonParser::parse_object()
 {
     JsonObject object;
     if (!consume_specific('{'))
-        return Error::from_string_literal("JsonParser: Expected '{'"sv);
+        return Error::from_string_literal("JsonParser: Expected '{'");
     for (;;) {
         ignore_while(is_space);
         if (peek() == '}')
@@ -132,10 +132,10 @@ ErrorOr<JsonValue> JsonParser::parse_object()
         ignore_while(is_space);
         auto name = TRY(consume_and_unescape_string());
         if (name.is_null())
-            return Error::from_string_literal("JsonParser: Expected object property name"sv);
+            return Error::from_string_literal("JsonParser: Expected object property name");
         ignore_while(is_space);
         if (!consume_specific(':'))
-            return Error::from_string_literal("JsonParser: Expected ':'"sv);
+            return Error::from_string_literal("JsonParser: Expected ':'");
         ignore_while(is_space);
         auto value = TRY(parse_helper());
         object.set(name, move(value));
@@ -143,13 +143,13 @@ ErrorOr<JsonValue> JsonParser::parse_object()
         if (peek() == '}')
             break;
         if (!consume_specific(','))
-            return Error::from_string_literal("JsonParser: Expected ','"sv);
+            return Error::from_string_literal("JsonParser: Expected ','");
         ignore_while(is_space);
         if (peek() == '}')
-            return Error::from_string_literal("JsonParser: Unexpected '}'"sv);
+            return Error::from_string_literal("JsonParser: Unexpected '}'");
     }
     if (!consume_specific('}'))
-        return Error::from_string_literal("JsonParser: Expected '}'"sv);
+        return Error::from_string_literal("JsonParser: Expected '}'");
     return JsonValue { move(object) };
 }
 
@@ -157,7 +157,7 @@ ErrorOr<JsonValue> JsonParser::parse_array()
 {
     JsonArray array;
     if (!consume_specific('['))
-        return Error::from_string_literal("JsonParser: Expected '['"sv);
+        return Error::from_string_literal("JsonParser: Expected '['");
     for (;;) {
         ignore_while(is_space);
         if (peek() == ']')
@@ -168,14 +168,14 @@ ErrorOr<JsonValue> JsonParser::parse_array()
         if (peek() == ']')
             break;
         if (!consume_specific(','))
-            return Error::from_string_literal("JsonParser: Expected ','"sv);
+            return Error::from_string_literal("JsonParser: Expected ','");
         ignore_while(is_space);
         if (peek() == ']')
-            return Error::from_string_literal("JsonParser: Unexpected ']'"sv);
+            return Error::from_string_literal("JsonParser: Unexpected ']'");
     }
     ignore_while(is_space);
     if (!consume_specific(']'))
-        return Error::from_string_literal("JsonParser: Expected ']'"sv);
+        return Error::from_string_literal("JsonParser: Expected ']'");
     return JsonValue { move(array) };
 }
 
@@ -197,7 +197,7 @@ ErrorOr<JsonValue> JsonParser::parse_number()
         char ch = peek();
         if (ch == '.') {
             if (is_double)
-                return Error::from_string_literal("JsonParser: Multiple '.' in number"sv);
+                return Error::from_string_literal("JsonParser: Multiple '.' in number");
 
             is_double = true;
             ++m_index;
@@ -209,18 +209,18 @@ ErrorOr<JsonValue> JsonParser::parse_number()
 
             if (is_double) {
                 if (ch == '-')
-                    return Error::from_string_literal("JsonParser: Error while parsing number"sv);
+                    return Error::from_string_literal("JsonParser: Error while parsing number");
 
                 fraction_buffer.append(ch);
             } else {
                 if (number_buffer.size() > 0) {
                     if (number_buffer.at(0) == '0')
-                        return Error::from_string_literal("JsonParser: Error while parsing number"sv);
+                        return Error::from_string_literal("JsonParser: Error while parsing number");
                 }
 
                 if (number_buffer.size() > 1) {
                     if (number_buffer.at(0) == '-' && number_buffer.at(1) == '0')
-                        return Error::from_string_literal("JsonParser: Error while parsing number"sv);
+                        return Error::from_string_literal("JsonParser: Error while parsing number");
                 }
 
                 number_buffer.append(ch);
@@ -247,14 +247,14 @@ ErrorOr<JsonValue> JsonParser::parse_number()
         } else {
             auto number = number_string.to_int();
             if (!number.has_value())
-                return Error::from_string_literal("JsonParser: Error while parsing number"sv);
+                return Error::from_string_literal("JsonParser: Error while parsing number");
             whole = number.value();
         }
 
         StringView fraction_string(fraction_buffer.data(), fraction_buffer.size());
         auto fraction_string_uint = fraction_string.to_uint<u64>();
         if (!fraction_string_uint.has_value())
-            return Error::from_string_literal("JsonParser: Error while parsing number"sv);
+            return Error::from_string_literal("JsonParser: Error while parsing number");
         auto fraction = static_cast<double>(fraction_string_uint.value());
         double sign = (whole < 0) ? -1 : 1;
 
@@ -272,7 +272,7 @@ ErrorOr<JsonValue> JsonParser::parse_number()
         } else {
             auto number = number_string.to_int<i64>();
             if (!number.has_value())
-                return Error::from_string_literal("JsonParser: Error while parsing number"sv);
+                return Error::from_string_literal("JsonParser: Error while parsing number");
             if (number.value() <= NumericLimits<i32>::max()) {
                 value = JsonValue((i32)number.value());
             } else {
@@ -289,21 +289,21 @@ ErrorOr<JsonValue> JsonParser::parse_number()
 ErrorOr<JsonValue> JsonParser::parse_true()
 {
     if (!consume_specific("true"))
-        return Error::from_string_literal("JsonParser: Expected 'true'"sv);
+        return Error::from_string_literal("JsonParser: Expected 'true'");
     return JsonValue(true);
 }
 
 ErrorOr<JsonValue> JsonParser::parse_false()
 {
     if (!consume_specific("false"))
-        return Error::from_string_literal("JsonParser: Expected 'false'"sv);
+        return Error::from_string_literal("JsonParser: Expected 'false'");
     return JsonValue(false);
 }
 
 ErrorOr<JsonValue> JsonParser::parse_null()
 {
     if (!consume_specific("null"))
-        return Error::from_string_literal("JsonParser: Expected 'null'"sv);
+        return Error::from_string_literal("JsonParser: Expected 'null'");
     return JsonValue(JsonValue::Type::Null);
 }
 
@@ -338,7 +338,7 @@ ErrorOr<JsonValue> JsonParser::parse_helper()
         return parse_null();
     }
 
-    return Error::from_string_literal("JsonParser: Unexpected character"sv);
+    return Error::from_string_literal("JsonParser: Unexpected character");
 }
 
 ErrorOr<JsonValue> JsonParser::parse()
@@ -346,7 +346,7 @@ ErrorOr<JsonValue> JsonParser::parse()
     auto result = TRY(parse_helper());
     ignore_while(is_space);
     if (!is_eof())
-        return Error::from_string_literal("JsonParser: Didn't consume all input"sv);
+        return Error::from_string_literal("JsonParser: Didn't consume all input");
     return result;
 }
 

+ 1 - 1
AK/Stream.h

@@ -45,7 +45,7 @@ public:
     {
         if (!handle_any_error())
             return {};
-        return Error::from_string_literal("Stream error"sv);
+        return Error::from_string_literal("Stream error");
     }
 
     virtual void set_recoverable_error() const { m_recoverable_error = true; }

+ 17 - 17
Meta/Lagom/Tools/CodeGenerators/LibEDID/GeneratePnpIDs.cpp

@@ -79,7 +79,7 @@ static ErrorOr<String> decode_html_entities(StringView const& str)
             }
 
             if (!found_entity)
-                return Error::from_string_literal("Failed to decode html entity"sv);
+                return Error::from_string_literal("Failed to decode html entity");
 
             if (entity_start.value() != start)
                 decoded_str.append(str.substring_view(start, entity_start.value() - start));
@@ -94,25 +94,25 @@ static ErrorOr<ApprovalDate> parse_approval_date(StringView const& str)
 {
     auto parts = str.trim_whitespace().split_view('/', true);
     if (parts.size() != 3)
-        return Error::from_string_literal("Failed to parse approval date parts (mm/dd/yyyy)"sv);
+        return Error::from_string_literal("Failed to parse approval date parts (mm/dd/yyyy)");
 
     auto month = parts[0].to_uint();
     if (!month.has_value())
-        return Error::from_string_literal("Failed to parse month from approval date"sv);
+        return Error::from_string_literal("Failed to parse month from approval date");
     if (month.value() == 0 || month.value() > 12)
-        return Error::from_string_literal("Invalid month in approval date"sv);
+        return Error::from_string_literal("Invalid month in approval date");
 
     auto day = parts[1].to_uint();
     if (!day.has_value())
-        return Error::from_string_literal("Failed to parse day from approval date"sv);
+        return Error::from_string_literal("Failed to parse day from approval date");
     if (day.value() == 0 || day.value() > 31)
-        return Error::from_string_literal("Invalid day in approval date"sv);
+        return Error::from_string_literal("Invalid day in approval date");
 
     auto year = parts[2].to_uint();
     if (!year.has_value())
-        return Error::from_string_literal("Failed to parse year from approval date"sv);
+        return Error::from_string_literal("Failed to parse year from approval date");
     if (year.value() < 1900 || year.value() > 2999)
-        return Error::from_string_literal("Invalid year approval date"sv);
+        return Error::from_string_literal("Invalid year approval date");
 
     return ApprovalDate { .year = year.value(), .month = month.value(), .day = day.value() };
 }
@@ -132,15 +132,15 @@ static ErrorOr<HashMap<String, PnpIdData>> parse_pnp_ids_database(Core::File& pn
 
         auto row_start_tag_end = pnp_ids_file_contents.find(">"sv, row_start.value() + row_start_tag.length());
         if (!row_start_tag_end.has_value())
-            return Error::from_string_literal("Incomplete row start tag"sv);
+            return Error::from_string_literal("Incomplete row start tag");
 
         static auto const row_end_tag = "</tr>"sv;
         auto row_end = pnp_ids_file_contents.find(row_end_tag, row_start.value());
         if (!row_end.has_value())
-            return Error::from_string_literal("No matching row end tag found"sv);
+            return Error::from_string_literal("No matching row end tag found");
 
         if (row_start_tag_end.value() > row_end.value() + row_end_tag.length())
-            return Error::from_string_literal("Invalid row start tag"sv);
+            return Error::from_string_literal("Invalid row start tag");
 
         auto row_string = pnp_ids_file_contents.substring_view(row_start_tag_end.value() + 1, row_end.value() - row_start_tag_end.value() - 1);
         Vector<String, (size_t)PnpIdColumns::ColumnCount> columns;
@@ -153,31 +153,31 @@ static ErrorOr<HashMap<String, PnpIdData>> parse_pnp_ids_database(Core::File& pn
             static auto const column_end_tag = "</td>"sv;
             auto column_end = row_string.find(column_end_tag, column_start.value() + column_start_tag.length());
             if (!column_end.has_value())
-                return Error::from_string_literal("No matching column end tag found"sv);
+                return Error::from_string_literal("No matching column end tag found");
 
             auto column_content_row_offset = column_start.value() + column_start_tag.length();
             auto column_str = row_string.substring_view(column_content_row_offset, column_end.value() - column_content_row_offset).trim_whitespace();
             if (column_str.find('\"').has_value())
-                return Error::from_string_literal("Found '\"' in column content, escaping not supported!"sv);
+                return Error::from_string_literal("Found '\"' in column content, escaping not supported!");
             columns.append(column_str);
 
             column_row_offset = column_end.value() + column_end_tag.length();
         }
 
         if (columns.size() != (size_t)PnpIdColumns::ColumnCount)
-            return Error::from_string_literal("Unexpected number of columns found"sv);
+            return Error::from_string_literal("Unexpected number of columns found");
 
         auto approval_date = TRY(parse_approval_date(columns[(size_t)PnpIdColumns::ApprovalDate]));
         auto decoded_manufacturer_name = TRY(decode_html_entities(columns[(size_t)PnpIdColumns::ManufacturerName]));
         auto hash_set_result = pnp_id_data.set(columns[(size_t)PnpIdColumns::ManufacturerId], PnpIdData { .manufacturer_name = decoded_manufacturer_name, .approval_date = move(approval_date) });
         if (hash_set_result != AK::HashSetResult::InsertedNewEntry)
-            return Error::from_string_literal("Duplicate manufacturer ID encountered"sv);
+            return Error::from_string_literal("Duplicate manufacturer ID encountered");
 
         row_content_offset = row_end.value() + row_end_tag.length();
     }
 
     if (pnp_id_data.size() <= 1)
-        return Error::from_string_literal("Expected more than one row"sv);
+        return Error::from_string_literal("Expected more than one row");
 
     return pnp_id_data;
 }
@@ -283,7 +283,7 @@ ErrorOr<int> serenity_main(Main::Arguments arguments)
     auto open_file = [&](StringView path, Core::OpenMode mode = Core::OpenMode::ReadOnly) -> ErrorOr<NonnullRefPtr<Core::File>> {
         if (path.is_empty()) {
             args_parser.print_usage(stderr, arguments.argv[0]);
-            return Error::from_string_literal("Must provide all command line options"sv);
+            return Error::from_string_literal("Must provide all command line options");
         }
 
         return Core::File::open(path, mode);

+ 15 - 7
Meta/Lagom/Tools/CodeGenerators/LibUnicode/GeneratorUtil.h

@@ -211,7 +211,7 @@ struct CanonicalLanguageID {
             if (segments.size() == ++index)
                 return language_id;
         } else {
-            return Error::from_string_literal("Expected language subtag"sv);
+            return Error::from_string_literal("Expected language subtag");
         }
 
         if (Unicode::is_unicode_script_subtag(segments[index])) {
@@ -228,7 +228,7 @@ struct CanonicalLanguageID {
 
         while (index < segments.size()) {
             if (!Unicode::is_unicode_variant_subtag(segments[index]))
-                return Error::from_string_literal("Expected variant subtag"sv);
+                return Error::from_string_literal("Expected variant subtag");
             language_id.variants.append(unique_strings.ensure(segments[index++]));
         }
 
@@ -244,7 +244,7 @@ struct CanonicalLanguageID {
 inline ErrorOr<NonnullOwnPtr<Core::Stream::BufferedFile>> open_file(StringView path, Core::Stream::OpenMode mode)
 {
     if (path.is_empty())
-        return Error::from_string_literal("Provided path is empty, please provide all command line options"sv);
+        return Error::from_string_literal("Provided path is empty, please provide all command line options");
 
     auto file = TRY(Core::Stream::File::open(path, mode));
     return Core::Stream::BufferedFile::create(move(file));
@@ -273,8 +273,12 @@ inline ErrorOr<Core::DirIterator> path_to_dir_iterator(String path, StringView s
         lexical_path = lexical_path.append(subpath);
 
     Core::DirIterator iterator(lexical_path.string(), Core::DirIterator::SkipParentAndBaseDir);
-    if (iterator.has_error())
-        return Error::from_string_literal(iterator.error_string());
+    if (iterator.has_error()) {
+        // FIXME: Make Core::DirIterator return a StringView for its error
+        //        string.
+        auto const* error_string_ptr = iterator.error_string();
+        return Error::from_string_view({ error_string_ptr, strlen(error_string_ptr) });
+    }
 
     return iterator;
 }
@@ -282,8 +286,12 @@ inline ErrorOr<Core::DirIterator> path_to_dir_iterator(String path, StringView s
 inline ErrorOr<String> next_path_from_dir_iterator(Core::DirIterator& iterator)
 {
     auto next_path = iterator.next_full_path();
-    if (iterator.has_error())
-        return Error::from_string_literal(iterator.error_string());
+    if (iterator.has_error()) {
+        // FIXME: Make Core::DirIterator return a StringView for its error
+        //        string.
+        auto const* error_string_ptr = iterator.error_string();
+        return Error::from_string_view({ error_string_ptr, strlen(error_string_ptr) });
+    }
 
     return next_path;
 }

+ 1 - 1
Userland/Applets/ResourceGraph/main.cpp

@@ -289,7 +289,7 @@ ErrorOr<int> serenity_main(Main::Arguments arguments)
         dbgln("Create applet: {} with spec '{}'", (int)graph_type, spec);
 
         if (parts.size() != 2)
-            return Error::from_string_literal("ResourceGraph: Applet spec is not composed of exactly 2 comma-separated parts"sv);
+            return Error::from_string_literal("ResourceGraph: Applet spec is not composed of exactly 2 comma-separated parts");
 
         auto name = parts[0];
         auto graph_color = Gfx::Color::from_string(parts[1]);

+ 5 - 5
Userland/Applications/PixelPaint/Image.cpp

@@ -30,7 +30,7 @@ ErrorOr<NonnullRefPtr<Image>> Image::try_create_with_size(Gfx::IntSize const& si
     VERIFY(!size.is_empty());
 
     if (size.width() > 16384 || size.height() > 16384)
-        return Error::from_string_literal("Image size too large"sv);
+        return Error::from_string_literal("Image size too large");
 
     return adopt_nonnull_ref_or_enomem(new (nothrow) Image(size));
 }
@@ -62,16 +62,16 @@ ErrorOr<NonnullRefPtr<Gfx::Bitmap>> Image::try_decode_bitmap(ReadonlyBytes bitma
     // FIXME: Find a way to avoid the memory copying here.
     auto maybe_decoded_image = client->decode_image(bitmap_data);
     if (!maybe_decoded_image.has_value())
-        return Error::from_string_literal("Image decode failed"sv);
+        return Error::from_string_literal("Image decode failed");
 
     // FIXME: Support multi-frame images?
     auto decoded_image = maybe_decoded_image.release_value();
     if (decoded_image.frames.is_empty())
-        return Error::from_string_literal("Image decode failed (no frames)"sv);
+        return Error::from_string_literal("Image decode failed (no frames)");
 
     auto decoded_bitmap = decoded_image.frames.first().bitmap;
     if (decoded_bitmap.is_null())
-        return Error::from_string_literal("Image decode failed (no bitmap for frame)"sv);
+        return Error::from_string_literal("Image decode failed (no bitmap for frame)");
     return decoded_bitmap.release_nonnull();
 }
 
@@ -108,7 +108,7 @@ ErrorOr<NonnullRefPtr<Image>> Image::try_create_from_pixel_paint_json(JsonObject
         auto height = layer_object.get("height").to_i32();
 
         if (width != layer->size().width() || height != layer->size().height())
-            return Error::from_string_literal("Decoded layer bitmap has wrong size"sv);
+            return Error::from_string_literal("Decoded layer bitmap has wrong size");
 
         image->add_layer(*layer);
 

+ 3 - 3
Userland/Applications/PixelPaint/Layer.cpp

@@ -20,7 +20,7 @@ ErrorOr<NonnullRefPtr<Layer>> Layer::try_create_with_size(Image& image, Gfx::Int
     VERIFY(!size.is_empty());
 
     if (size.width() > 16384 || size.height() > 16384)
-        return Error::from_string_literal("Layer size too large"sv);
+        return Error::from_string_literal("Layer size too large");
 
     auto bitmap = TRY(Gfx::Bitmap::try_create(Gfx::BitmapFormat::BGRA8888, size));
     return adopt_nonnull_ref_or_enomem(new (nothrow) Layer(image, move(bitmap), move(name)));
@@ -31,7 +31,7 @@ ErrorOr<NonnullRefPtr<Layer>> Layer::try_create_with_bitmap(Image& image, Nonnul
     VERIFY(!bitmap->size().is_empty());
 
     if (bitmap->size().width() > 16384 || bitmap->size().height() > 16384)
-        return Error::from_string_literal("Layer size too large"sv);
+        return Error::from_string_literal("Layer size too large");
 
     return adopt_nonnull_ref_or_enomem(new (nothrow) Layer(image, bitmap, move(name)));
 }
@@ -145,7 +145,7 @@ void Layer::erase_selection(Selection const& selection)
 ErrorOr<void> Layer::try_set_bitmaps(NonnullRefPtr<Gfx::Bitmap> content, RefPtr<Gfx::Bitmap> mask)
 {
     if (mask && content->size() != mask->size())
-        return Error::from_string_literal("Layer content and mask must be same size"sv);
+        return Error::from_string_literal("Layer content and mask must be same size");
 
     m_content_bitmap = move(content);
     m_mask_bitmap = move(mask);

+ 6 - 6
Userland/DevTools/HackStudio/ProjectBuilder.cpp

@@ -32,7 +32,7 @@ ErrorOr<void> ProjectBuilder::build(StringView active_file)
     }
 
     if (active_file.is_null())
-        return Error::from_string_literal("no active file"sv);
+        return Error::from_string_literal("no active file");
 
     if (active_file.ends_with(".js")) {
         TRY(m_terminal->run_command(String::formatted("js -A {}", active_file)));
@@ -58,7 +58,7 @@ ErrorOr<void> ProjectBuilder::run(StringView active_file)
     }
 
     if (active_file.is_null())
-        return Error::from_string_literal("no active file"sv);
+        return Error::from_string_literal("no active file");
 
     if (active_file.ends_with(".js")) {
         TRY(m_terminal->run_command(String::formatted("js {}", active_file)));
@@ -89,7 +89,7 @@ ErrorOr<void> ProjectBuilder::update_active_file(StringView active_file)
     auto cmake_file = find_cmake_file_for(active_file);
     if (!cmake_file.has_value()) {
         warnln("did not find cmake file for: {}", active_file);
-        return Error::from_string_literal("did not find cmake file"sv);
+        return Error::from_string_literal("did not find cmake file");
     }
 
     if (m_serenity_component_cmake_file == cmake_file.value())
@@ -116,7 +116,7 @@ ErrorOr<String> ProjectBuilder::component_name(StringView cmake_file_path)
     static Regex<ECMA262> const component_name(R"~~~(serenity_component\([\s]*(\w+)[\s\S]*\))~~~");
     RegexResult result;
     if (!component_name.search(StringView { content }, result))
-        return Error::from_string_literal("component not found"sv);
+        return Error::from_string_literal("component not found");
 
     return String { result.capture_group_matches.at(0).at(0).view.string_view() };
 }
@@ -255,7 +255,7 @@ ErrorOr<void> ProjectBuilder::verify_cmake_is_installed()
     auto res = Core::command("cmake --version", {});
     if (!res.is_error() && res.value().exit_code == 0)
         return {};
-    return Error::from_string_literal("CMake port is not installed"sv);
+    return Error::from_string_literal("CMake port is not installed");
 }
 
 ErrorOr<void> ProjectBuilder::verify_make_is_installed()
@@ -263,7 +263,7 @@ ErrorOr<void> ProjectBuilder::verify_make_is_installed()
     auto res = Core::command("make --version", {});
     if (!res.is_error() && res.value().exit_code == 0)
         return {};
-    return Error::from_string_literal("Make port is not installed"sv);
+    return Error::from_string_literal("Make port is not installed");
 }
 
 String ProjectBuilder::build_directory() const

+ 1 - 1
Userland/DevTools/HackStudio/TerminalWrapper.cpp

@@ -49,7 +49,7 @@ ErrorOr<void> TerminalWrapper::run_command(String const& command, Optional<Strin
 
             VERIFY(m_child_exit_status.has_value());
             if (m_child_exit_status.value() != 0)
-                return Error::from_string_literal(failure_message.value_or("Command execution failed"sv));
+                return Error::from_string_view(failure_message.value_or("Command execution failed"sv));
         }
 
         return {};

+ 4 - 4
Userland/DevTools/Profiler/Profile.cpp

@@ -240,7 +240,7 @@ ErrorOr<NonnullOwnPtr<Profile>> Profile::load_from_perfcore_file(StringView path
 
     auto json = JsonValue::from_string(file->read_all());
     if (json.is_error() || !json.value().is_object())
-        return Error::from_string_literal("Invalid perfcore format (not a JSON object)"sv);
+        return Error::from_string_literal("Invalid perfcore format (not a JSON object)");
 
     auto const& object = json.value().as_object();
 
@@ -255,7 +255,7 @@ ErrorOr<NonnullOwnPtr<Profile>> Profile::load_from_perfcore_file(StringView path
 
     auto const* strings_value = object.get_ptr("strings"sv);
     if (!strings_value || !strings_value->is_array())
-        return Error::from_string_literal("Malformed profile (strings is not an array)"sv);
+        return Error::from_string_literal("Malformed profile (strings is not an array)");
 
     HashMap<FlatPtr, String> profile_strings;
     for (FlatPtr string_id = 0; string_id < strings_value->as_array().size(); ++string_id) {
@@ -265,7 +265,7 @@ ErrorOr<NonnullOwnPtr<Profile>> Profile::load_from_perfcore_file(StringView path
 
     auto const* events_value = object.get_ptr("events");
     if (!events_value || !events_value->is_array())
-        return Error::from_string_literal("Malformed profile (events is not an array)"sv);
+        return Error::from_string_literal("Malformed profile (events is not an array)");
 
     auto const& perf_events = events_value->as_array();
 
@@ -446,7 +446,7 @@ ErrorOr<NonnullOwnPtr<Profile>> Profile::load_from_perfcore_file(StringView path
     }
 
     if (events.is_empty())
-        return Error::from_string_literal("No events captured (targeted process was never on CPU)"sv);
+        return Error::from_string_literal("No events captured (targeted process was never on CPU)");
 
     quick_sort(all_processes, [](auto& a, auto& b) {
         if (a.pid == b.pid)

+ 1 - 1
Userland/Libraries/LibAudio/FlacLoader.cpp

@@ -861,7 +861,7 @@ ErrorOr<u64> read_utf8_char(BigEndianInputBitStream& input)
     if ((start_byte & 0b10000000) == 0) {
         return start_byte;
     } else if ((start_byte & 0b11000000) == 0b10000000) {
-        return Error::from_string_literal("Illegal continuation byte"sv);
+        return Error::from_string_literal("Illegal continuation byte");
     }
     // This algorithm is too good and supports the theoretical max 0xFF start byte
     u8 length = 1;

+ 6 - 6
Userland/Libraries/LibCore/Account.cpp

@@ -73,14 +73,14 @@ ErrorOr<Account> Account::self([[maybe_unused]] Read options)
 
     auto pwd = TRY(Core::System::getpwuid(getuid()));
     if (!pwd.has_value())
-        return Error::from_string_literal("No such user"sv);
+        return Error::from_string_literal("No such user");
 
     spwd spwd = {};
 #ifndef AK_OS_BSD_GENERIC
     if (options != Read::PasswdOnly) {
         auto maybe_spwd = TRY(Core::System::getspnam({ pwd->pw_name, strlen(pwd->pw_name) }));
         if (!maybe_spwd.has_value())
-            return Error::from_string_literal("No shadow entry for user"sv);
+            return Error::from_string_literal("No shadow entry for user");
         spwd = maybe_spwd.release_value();
     }
 #endif
@@ -92,14 +92,14 @@ ErrorOr<Account> Account::from_name(char const* username, [[maybe_unused]] Read
 {
     auto pwd = TRY(Core::System::getpwnam({ username, strlen(username) }));
     if (!pwd.has_value())
-        return Error::from_string_literal("No such user"sv);
+        return Error::from_string_literal("No such user");
 
     spwd spwd = {};
 #ifndef AK_OS_BSD_GENERIC
     if (options != Read::PasswdOnly) {
         auto maybe_spwd = TRY(Core::System::getspnam({ pwd->pw_name, strlen(pwd->pw_name) }));
         if (!maybe_spwd.has_value())
-            return Error::from_string_literal("No shadow entry for user"sv);
+            return Error::from_string_literal("No shadow entry for user");
         spwd = maybe_spwd.release_value();
     }
 #endif
@@ -110,14 +110,14 @@ ErrorOr<Account> Account::from_uid(uid_t uid, [[maybe_unused]] Read options)
 {
     auto pwd = TRY(Core::System::getpwuid(uid));
     if (!pwd.has_value())
-        return Error::from_string_literal("No such user"sv);
+        return Error::from_string_literal("No such user");
 
     spwd spwd = {};
 #ifndef AK_OS_BSD_GENERIC
     if (options != Read::PasswdOnly) {
         auto maybe_spwd = TRY(Core::System::getspnam({ pwd->pw_name, strlen(pwd->pw_name) }));
         if (!maybe_spwd.has_value())
-            return Error::from_string_literal("No shadow entry for user"sv);
+            return Error::from_string_literal("No shadow entry for user");
         spwd = maybe_spwd.release_value();
     }
 #endif

+ 1 - 1
Userland/Libraries/LibCore/Command.cpp

@@ -22,7 +22,7 @@ ErrorOr<CommandResult> command(String const& command_string, Optional<LexicalPat
 {
     auto parts = command_string.split(' ');
     if (parts.is_empty())
-        return Error::from_string_literal("empty command"sv);
+        return Error::from_string_literal("empty command");
     auto program = parts[0];
     parts.remove(0);
     return command(program, parts, chdir);

+ 4 - 4
Userland/Libraries/LibCore/FilePermissionsMask.cpp

@@ -41,7 +41,7 @@ ErrorOr<FilePermissionsMask> FilePermissionsMask::from_numeric_notation(StringVi
 {
     mode_t mode = AK::StringUtils::convert_to_uint_from_octal<u16>(string).value_or(01000);
     if (mode > 0777)
-        return Error::from_string_literal("invalid octal representation"sv);
+        return Error::from_string_literal("invalid octal representation");
     return FilePermissionsMask().assign_permissions(mode);
 }
 
@@ -73,9 +73,9 @@ ErrorOr<FilePermissionsMask> FilePermissionsMask::from_symbolic_notation(StringV
                 else if (ch == '=')
                     operation = Operation::Assign;
                 else if (classes == 0)
-                    return Error::from_string_literal("invalid class: expected 'u', 'g', 'o' or 'a'"sv);
+                    return Error::from_string_literal("invalid class: expected 'u', 'g', 'o' or 'a'");
                 else
-                    return Error::from_string_literal("invalid operation: expected '+', '-' or '='"sv);
+                    return Error::from_string_literal("invalid operation: expected '+', '-' or '='");
 
                 // if an operation was specified without a class, assume all
                 if (classes == 0)
@@ -106,7 +106,7 @@ ErrorOr<FilePermissionsMask> FilePermissionsMask::from_symbolic_notation(StringV
             else if (ch == 'x')
                 write_bits = 1;
             else
-                return Error::from_string_literal("invalid symbolic permission: expected 'r', 'w' or 'x'"sv);
+                return Error::from_string_literal("invalid symbolic permission: expected 'r', 'w' or 'x'");
 
             mode_t clear_bits = operation == Operation::Assign ? 7 : write_bits;
 

+ 1 - 1
Userland/Libraries/LibCore/LocalServer.cpp

@@ -35,7 +35,7 @@ LocalServer::~LocalServer()
 ErrorOr<void> LocalServer::take_over_from_system_server(String const& socket_path)
 {
     if (m_listening)
-        return Error::from_string_literal("Core::LocalServer: Can't perform socket takeover when already listening"sv);
+        return Error::from_string_literal("Core::LocalServer: Can't perform socket takeover when already listening");
 
     auto socket = TRY(take_over_socket_from_system_server(socket_path));
     m_fd = TRY(socket->release_fd());

+ 3 - 3
Userland/Libraries/LibCore/MemoryStream.h

@@ -45,19 +45,19 @@ public:
         switch (seek_mode) {
         case SeekMode::SetPosition:
             if (offset >= static_cast<i64>(m_bytes.size()))
-                return Error::from_string_literal("Offset past the end of the stream memory"sv);
+                return Error::from_string_literal("Offset past the end of the stream memory");
 
             m_offset = offset;
             break;
         case SeekMode::FromCurrentPosition:
             if (offset + static_cast<i64>(m_offset) >= static_cast<i64>(m_bytes.size()))
-                return Error::from_string_literal("Offset past the end of the stream memory"sv);
+                return Error::from_string_literal("Offset past the end of the stream memory");
 
             m_offset += offset;
             break;
         case SeekMode::FromEndPosition:
             if (offset >= static_cast<i64>(m_bytes.size()))
-                return Error::from_string_literal("Offset past the start of the stream memory"sv);
+                return Error::from_string_literal("Offset past the start of the stream memory");
 
             m_offset = m_bytes.size() - offset;
             break;

+ 2 - 2
Userland/Libraries/LibCore/SOCKSProxyClient.cpp

@@ -277,7 +277,7 @@ ErrorOr<NonnullOwnPtr<SOCKSProxyClient>> SOCKSProxyClient::connect(Socket& under
             auto reply = TRY(send_connect_request_message(underlying, version, target, target_port, command));
             if (reply != Reply::Succeeded) {
                 underlying.close();
-                return Error::from_string_literal(reply_response_name(reply));
+                return Error::from_string_view(reply_response_name(reply));
             }
 
             return adopt_nonnull_own_or_enomem(new SOCKSProxyClient {
@@ -296,7 +296,7 @@ ErrorOr<NonnullOwnPtr<SOCKSProxyClient>> SOCKSProxyClient::connect(Socket& under
             auto reply = TRY(send_connect_request_message(underlying, version, target, target_port, command));
             if (reply != Reply::Succeeded) {
                 underlying.close();
-                return Error::from_string_literal(reply_response_name(reply));
+                return Error::from_string_view(reply_response_name(reply));
             }
 
             return adopt_nonnull_own_or_enomem(new SOCKSProxyClient {

+ 2 - 2
Userland/Libraries/LibCore/SharedCircularQueue.h

@@ -118,7 +118,7 @@ public:
             if (!result.is_error())
                 break;
             if (result.error() != QueueStatus::Full)
-                return Error::from_string_literal("Unexpected error while enqueuing"sv);
+                return Error::from_string_literal("Unexpected error while enqueuing");
 
             wait_function();
         }
@@ -208,7 +208,7 @@ private:
         SharedMemorySPCQ* shared_queue = is_new ? new (raw_mapping) SharedMemorySPCQ() : reinterpret_cast<SharedMemorySPCQ*>(raw_mapping);
 
         if (!shared_queue)
-            return Error::from_string_literal("Unexpected error when creating shared queue from raw memory"sv);
+            return Error::from_string_literal("Unexpected error when creating shared queue from raw memory");
 
         return SharedSingleProducerCircularQueue<T, Size> { move(name), adopt_ref(*new (nothrow) RefCountedSharedMemorySPCQ(shared_queue, fd)) };
     }

+ 2 - 1
Userland/Libraries/LibCore/Stream.cpp

@@ -336,7 +336,8 @@ ErrorOr<IPv4Address> Socket::resolve_host(String const& host, SocketType type)
             return Error::from_syscall("getaddrinfo", -errno);
         }
 
-        return Error::from_string_literal(gai_strerror(rc));
+        auto const* error_string = gai_strerror(rc);
+        return Error::from_string_view({ error_string, strlen(error_string) });
     }
 
     auto* socket_address = bit_cast<struct sockaddr_in*>(results->ai_addr);

+ 2 - 2
Userland/Libraries/LibCore/SystemServerTakeover.cpp

@@ -47,7 +47,7 @@ ErrorOr<NonnullOwnPtr<Core::Stream::LocalSocket>> take_over_socket_from_system_s
     } else {
         auto it = s_overtaken_sockets.find(socket_path);
         if (it == s_overtaken_sockets.end())
-            return Error::from_string_literal("Non-existent socket requested"sv);
+            return Error::from_string_literal("Non-existent socket requested");
         fd = it->value;
     }
 
@@ -55,7 +55,7 @@ ErrorOr<NonnullOwnPtr<Core::Stream::LocalSocket>> take_over_socket_from_system_s
     auto stat = TRY(Core::System::fstat(fd));
 
     if (!S_ISSOCK(stat.st_mode))
-        return Error::from_string_literal("The fd we got from SystemServer is not a socket"sv);
+        return Error::from_string_literal("The fd we got from SystemServer is not a socket");
 
     auto socket = TRY(Core::Stream::LocalSocket::adopt_fd(fd));
     // It had to be !CLOEXEC for obvious reasons, but we

+ 4 - 4
Userland/Libraries/LibDesktop/Launcher.cpp

@@ -59,7 +59,7 @@ ErrorOr<void> Launcher::add_allowed_url(URL const& url)
 {
     auto response_or_error = connection().try_add_allowed_url(url);
     if (response_or_error.is_error())
-        return Error::from_string_literal("Launcher::add_allowed_url: Failed"sv);
+        return Error::from_string_literal("Launcher::add_allowed_url: Failed");
     return {};
 }
 
@@ -67,7 +67,7 @@ ErrorOr<void> Launcher::add_allowed_handler_with_any_url(String const& handler)
 {
     auto response_or_error = connection().try_add_allowed_handler_with_any_url(handler);
     if (response_or_error.is_error())
-        return Error::from_string_literal("Launcher::add_allowed_handler_with_any_url: Failed"sv);
+        return Error::from_string_literal("Launcher::add_allowed_handler_with_any_url: Failed");
     return {};
 }
 
@@ -75,7 +75,7 @@ ErrorOr<void> Launcher::add_allowed_handler_with_only_specific_urls(String const
 {
     auto response_or_error = connection().try_add_allowed_handler_with_only_specific_urls(handler, urls);
     if (response_or_error.is_error())
-        return Error::from_string_literal("Launcher::add_allowed_handler_with_only_specific_urls: Failed"sv);
+        return Error::from_string_literal("Launcher::add_allowed_handler_with_only_specific_urls: Failed");
     return {};
 }
 
@@ -83,7 +83,7 @@ ErrorOr<void> Launcher::seal_allowlist()
 {
     auto response_or_error = connection().try_seal_allowlist();
     if (response_or_error.is_error())
-        return Error::from_string_literal("Launcher::seal_allowlist: Failed"sv);
+        return Error::from_string_literal("Launcher::seal_allowlist: Failed");
     return {};
 }
 

+ 15 - 15
Userland/Libraries/LibEDID/EDID.cpp

@@ -58,7 +58,7 @@ public:
 
                 auto* vic_details = VIC::find_details_by_vic_id(vic_id);
                 if (!vic_details)
-                    return Error::from_string_literal("CEA 861 extension block has invalid short video descriptor"sv);
+                    return Error::from_string_literal("CEA 861 extension block has invalid short video descriptor");
 
                 IterationDecision decision = callback(is_native, *vic_details);
                 if (decision != IterationDecision::Continue)
@@ -77,7 +77,7 @@ public:
         }
 
         if (dtd_start > offsetof(Definitions::ExtensionBlock, checksum) - sizeof(Definitions::DetailedTiming))
-            return Error::from_string_literal("CEA 861 extension block has invalid DTD list"sv);
+            return Error::from_string_literal("CEA 861 extension block has invalid DTD list");
 
         size_t dtd_index = 0;
         for (size_t offset = dtd_start; offset <= offsetof(Definitions::ExtensionBlock, checksum) - sizeof(Definitions::DetailedTiming); offset += sizeof(Definitions::DetailedTiming)) {
@@ -108,7 +108,7 @@ private:
             return IterationDecision::Continue;
 
         if (dtd_start > offsetof(Definitions::ExtensionBlock, checksum))
-            return Error::from_string_literal("CEA 861 extension block has invalid DTD start offset"sv);
+            return Error::from_string_literal("CEA 861 extension block has invalid DTD start offset");
 
         auto* data_block_header = &m_block->cea861extension.bytes[0];
         auto* data_block_end = (u8 const*)m_block + dtd_start;
@@ -117,7 +117,7 @@ private:
             size_t payload_size = header_byte & 0x1f;
             auto tag = (DataBlockTag)((header_byte >> 5) & 0x7);
             if (tag == DataBlockTag::Extended && payload_size == 0)
-                return Error::from_string_literal("CEA 861 extension block has invalid extended data block size"sv);
+                return Error::from_string_literal("CEA 861 extension block has invalid extended data block size");
 
             auto decision = TRY(callback(tag, m_edid.m_bytes.slice(data_block_header - m_edid.m_bytes.data() + 1, payload_size)));
             if (decision != IterationDecision::Continue)
@@ -135,7 +135,7 @@ private:
             return IterationDecision::Continue;
 
         if (dtd_start > offsetof(Definitions::ExtensionBlock, checksum) - sizeof(Definitions::DetailedTiming))
-            return Error::from_string_literal("CEA 861 extension block has invalid DTD list"sv);
+            return Error::from_string_literal("CEA 861 extension block has invalid DTD list");
 
         for (size_t offset = dtd_start; offset <= offsetof(Definitions::ExtensionBlock, checksum) - sizeof(Definitions::DisplayDescriptor); offset += sizeof(Definitions::DisplayDescriptor)) {
             auto& dd = *(Definitions::DisplayDescriptor const*)((u8 const*)m_block + offset);
@@ -301,17 +301,17 @@ Definitions::EDID const& Parser::raw_edid() const
 ErrorOr<void> Parser::parse()
 {
     if (m_bytes.size() < sizeof(Definitions::EDID))
-        return Error::from_string_literal("Incomplete Parser structure"sv);
+        return Error::from_string_literal("Incomplete Parser structure");
 
     auto const& edid = raw_edid();
     u64 header = read_le(&edid.header);
     if (header != 0x00ffffffffffff00ull)
-        return Error::from_string_literal("No Parser header"sv);
+        return Error::from_string_literal("No Parser header");
 
     u8 major_version = read_host(&edid.version.version);
     m_revision = read_host(&edid.version.revision);
     if (major_version != 1 || m_revision > 4)
-        return Error::from_string_literal("Unsupported Parser version"sv);
+        return Error::from_string_literal("Unsupported Parser version");
 
 #ifdef KERNEL
     m_version = TRY(Kernel::KString::formatted("1.{}", (int)m_revision));
@@ -325,7 +325,7 @@ ErrorOr<void> Parser::parse()
 
     if (checksum != 0) {
         if (m_revision >= 4) {
-            return Error::from_string_literal("Parser checksum mismatch"sv);
+            return Error::from_string_literal("Parser checksum mismatch");
         } else {
             dbgln("EDID checksum mismatch, data may be corrupted!");
         }
@@ -370,9 +370,9 @@ ErrorOr<IterationDecision> Parser::for_each_extension_block(Function<IterationDe
             current_extension_map = &raw_extension_blocks[0];
             raw_index++;
             if (read_host(&current_extension_map->tag) != (u8)Definitions::ExtensionBlockTag::ExtensionBlockMap)
-                return Error::from_string_literal("Did not find extension map at block 1"sv);
+                return Error::from_string_literal("Did not find extension map at block 1");
             if (!validate_block_checksum(*current_extension_map))
-                return Error::from_string_literal("Extension block map checksum mismatch"sv);
+                return Error::from_string_literal("Extension block map checksum mismatch");
         }
     } else if (read_host(&raw_extension_blocks[0].tag) == (u8)Definitions::ExtensionBlockTag::ExtensionBlockMap) {
         current_extension_map = &raw_extension_blocks[0];
@@ -385,18 +385,18 @@ ErrorOr<IterationDecision> Parser::for_each_extension_block(Function<IterationDe
 
         if (current_extension_map && raw_index == 127) {
             if (tag != (u8)Definitions::ExtensionBlockTag::ExtensionBlockMap)
-                return Error::from_string_literal("Did not find extension map at block 128"sv);
+                return Error::from_string_literal("Did not find extension map at block 128");
             current_extension_map = &raw_extension_blocks[127];
             if (!validate_block_checksum(*current_extension_map))
-                return Error::from_string_literal("Extension block map checksum mismatch"sv);
+                return Error::from_string_literal("Extension block map checksum mismatch");
             continue;
         }
 
         if (tag == (u8)Definitions::ExtensionBlockTag::ExtensionBlockMap)
-            return Error::from_string_literal("Unexpected extension map encountered"sv);
+            return Error::from_string_literal("Unexpected extension map encountered");
 
         if (!validate_block_checksum(raw_block))
-            return Error::from_string_literal("Extension block checksum mismatch"sv);
+            return Error::from_string_literal("Extension block checksum mismatch");
 
         size_t offset = (u8 const*)&raw_block - m_bytes.data();
         IterationDecision decision = callback(raw_index + 1, tag, raw_block.block.revision, m_bytes.slice(offset, sizeof(Definitions::ExtensionBlock)));

+ 1 - 1
Userland/Libraries/LibFileSystemAccessClient/Client.cpp

@@ -140,7 +140,7 @@ void Client::handle_prompt_end(i32 request_id, i32 error, Optional<IPC::File> co
 
     if (file->is_device()) {
         GUI::MessageBox::show_error(request_data.parent_window, String::formatted("Opening \"{}\" failed: Cannot open device files", *chosen_file));
-        request_data.promise->resolve(Error::from_string_literal("Cannot open device files"sv));
+        request_data.promise->resolve(Error::from_string_literal("Cannot open device files"));
         return;
     }
 

+ 6 - 6
Userland/Libraries/LibGUI/GML/Parser.cpp

@@ -32,12 +32,12 @@ static ErrorOr<NonnullRefPtr<Object>> parse_gml_object(Queue<Token>& tokens)
         TRY(object->add_property_child(TRY(Node::from_token<Comment>(tokens.dequeue()))));
 
     if (peek() != Token::Type::ClassMarker)
-        return Error::from_string_literal("Expected class marker"sv);
+        return Error::from_string_literal("Expected class marker");
 
     tokens.dequeue();
 
     if (peek() != Token::Type::ClassName)
-        return Error::from_string_literal("Expected class name"sv);
+        return Error::from_string_literal("Expected class name");
 
     auto class_name = tokens.dequeue();
     object->set_name(class_name.m_view);
@@ -69,10 +69,10 @@ static ErrorOr<NonnullRefPtr<Object>> parse_gml_object(Queue<Token>& tokens)
                 auto property_name = tokens.dequeue();
 
                 if (property_name.m_view.is_empty())
-                    return Error::from_string_literal("Expected non-empty property name"sv);
+                    return Error::from_string_literal("Expected non-empty property name");
 
                 if (peek() != Token::Type::Colon)
-                    return Error::from_string_literal("Expected ':'"sv);
+                    return Error::from_string_literal("Expected ':'");
 
                 tokens.dequeue();
 
@@ -87,7 +87,7 @@ static ErrorOr<NonnullRefPtr<Object>> parse_gml_object(Queue<Token>& tokens)
             } else if (peek() == Token::Type::Comment) {
                 pending_comments.append(TRY(Node::from_token<Comment>(tokens.dequeue())));
             } else {
-                return Error::from_string_literal("Expected child, property, comment, or }}"sv);
+                return Error::from_string_literal("Expected child, property, comment, or }}");
             }
         }
 
@@ -96,7 +96,7 @@ static ErrorOr<NonnullRefPtr<Object>> parse_gml_object(Queue<Token>& tokens)
             TRY(object->add_sub_object_child(pending_comments.take_first()));
 
         if (peek() != Token::Type::RightCurly)
-            return Error::from_string_literal("Expected }}"sv);
+            return Error::from_string_literal("Expected }}");
 
         tokens.dequeue();
     }

+ 1 - 1
Userland/Libraries/LibGUI/Icon.cpp

@@ -89,7 +89,7 @@ ErrorOr<Icon> Icon::try_create_default_icon(StringView name)
 
     if (!bitmap16 && !bitmap32) {
         dbgln("Default icon not found: {}", name);
-        return Error::from_string_literal("Default icon not found"sv);
+        return Error::from_string_literal("Default icon not found");
     }
 
     return Icon(move(bitmap16), move(bitmap32));

+ 3 - 3
Userland/Libraries/LibGfx/BMPLoader.cpp

@@ -1356,13 +1356,13 @@ size_t BMPImageDecoderPlugin::frame_count()
 ErrorOr<ImageFrameDescriptor> BMPImageDecoderPlugin::frame(size_t index)
 {
     if (index > 0)
-        return Error::from_string_literal("BMPImageDecoderPlugin: Invalid frame index"sv);
+        return Error::from_string_literal("BMPImageDecoderPlugin: Invalid frame index");
 
     if (m_context->state == BMPLoadingContext::State::Error)
-        return Error::from_string_literal("BMPImageDecoderPlugin: Decoding failed"sv);
+        return Error::from_string_literal("BMPImageDecoderPlugin: Decoding failed");
 
     if (m_context->state < BMPLoadingContext::State::PixelDataDecoded && !decode_bmp_pixel_data(*m_context))
-        return Error::from_string_literal("BMPImageDecoderPlugin: Decoding failed"sv);
+        return Error::from_string_literal("BMPImageDecoderPlugin: Decoding failed");
 
     VERIFY(m_context->bitmap);
     return ImageFrameDescriptor { m_context->bitmap, 0 };

+ 9 - 9
Userland/Libraries/LibGfx/Bitmap.cpp

@@ -70,7 +70,7 @@ ErrorOr<NonnullRefPtr<Bitmap>> Bitmap::try_create(BitmapFormat format, IntSize c
 ErrorOr<NonnullRefPtr<Bitmap>> Bitmap::try_create_shareable(BitmapFormat format, IntSize const& size, int scale_factor)
 {
     if (size_would_overflow(format, size, scale_factor))
-        return Error::from_string_literal("Gfx::Bitmap::try_create_shareable size overflow"sv);
+        return Error::from_string_literal("Gfx::Bitmap::try_create_shareable size overflow");
 
     auto const pitch = minimum_pitch(size.width() * scale_factor, format);
     auto const data_size = size_in_bytes(pitch, size.height() * scale_factor);
@@ -98,7 +98,7 @@ Bitmap::Bitmap(BitmapFormat format, IntSize const& size, int scale_factor, Backi
 ErrorOr<NonnullRefPtr<Bitmap>> Bitmap::try_create_wrapper(BitmapFormat format, IntSize const& size, int scale_factor, size_t pitch, void* data)
 {
     if (size_would_overflow(format, size, scale_factor))
-        return Error::from_string_literal("Gfx::Bitmap::try_create_wrapper size overflow"sv);
+        return Error::from_string_literal("Gfx::Bitmap::try_create_wrapper size overflow");
     return adopt_ref(*new Bitmap(format, size, scale_factor, pitch, data));
 }
 
@@ -134,7 +134,7 @@ ErrorOr<NonnullRefPtr<Bitmap>> Bitmap::try_load_from_fd_and_close(int fd, String
             return bitmap.release_nonnull();
     }
 
-    return Error::from_string_literal("Gfx::Bitmap unable to load from fd"sv);
+    return Error::from_string_literal("Gfx::Bitmap unable to load from fd");
 }
 
 Bitmap::Bitmap(BitmapFormat format, IntSize const& size, int scale_factor, size_t pitch, void* data)
@@ -206,22 +206,22 @@ ErrorOr<NonnullRefPtr<Bitmap>> Bitmap::try_create_from_serialized_byte_buffer(By
     };
 
     if (!read(actual_size) || !read(width) || !read(height) || !read(scale_factor) || !read(format) || !read(palette_size))
-        return Error::from_string_literal("Gfx::Bitmap::try_create_from_serialized_byte_buffer: decode failed"sv);
+        return Error::from_string_literal("Gfx::Bitmap::try_create_from_serialized_byte_buffer: decode failed");
 
     if (format > BitmapFormat::BGRA8888 || format < BitmapFormat::Indexed1)
-        return Error::from_string_literal("Gfx::Bitmap::try_create_from_serialized_byte_buffer: decode failed"sv);
+        return Error::from_string_literal("Gfx::Bitmap::try_create_from_serialized_byte_buffer: decode failed");
 
     if (!check_size({ width, height }, scale_factor, format, actual_size))
-        return Error::from_string_literal("Gfx::Bitmap::try_create_from_serialized_byte_buffer: decode failed"sv);
+        return Error::from_string_literal("Gfx::Bitmap::try_create_from_serialized_byte_buffer: decode failed");
 
     palette.ensure_capacity(palette_size);
     for (size_t i = 0; i < palette_size; ++i) {
         if (!read(palette[i]))
-            return Error::from_string_literal("Gfx::Bitmap::try_create_from_serialized_byte_buffer: decode failed"sv);
+            return Error::from_string_literal("Gfx::Bitmap::try_create_from_serialized_byte_buffer: decode failed");
     }
 
     if (stream.remaining() < actual_size)
-        return Error::from_string_literal("Gfx::Bitmap::try_create_from_serialized_byte_buffer: decode failed"sv);
+        return Error::from_string_literal("Gfx::Bitmap::try_create_from_serialized_byte_buffer: decode failed");
 
     auto data = stream.bytes().slice(stream.offset(), actual_size);
 
@@ -548,7 +548,7 @@ Gfx::ShareableBitmap Bitmap::to_shareable_bitmap() const
 ErrorOr<BackingStore> Bitmap::allocate_backing_store(BitmapFormat format, IntSize const& size, int scale_factor)
 {
     if (size_would_overflow(format, size, scale_factor))
-        return Error::from_string_literal("Gfx::Bitmap backing store size overflow"sv);
+        return Error::from_string_literal("Gfx::Bitmap backing store size overflow");
 
     auto const pitch = minimum_pitch(size.width() * scale_factor, format);
     auto const data_size_in_bytes = size_in_bytes(pitch, size.height() * scale_factor);

+ 3 - 3
Userland/Libraries/LibGfx/DDSLoader.cpp

@@ -998,15 +998,15 @@ size_t DDSImageDecoderPlugin::frame_count()
 ErrorOr<ImageFrameDescriptor> DDSImageDecoderPlugin::frame(size_t index)
 {
     if (index > 0)
-        return Error::from_string_literal("DDSImageDecoderPlugin: Invalid frame index"sv);
+        return Error::from_string_literal("DDSImageDecoderPlugin: Invalid frame index");
 
     if (m_context->state == DDSLoadingContext::State::Error)
-        return Error::from_string_literal("DDSImageDecoderPlugin: Decoding failed"sv);
+        return Error::from_string_literal("DDSImageDecoderPlugin: Decoding failed");
 
     if (m_context->state < DDSLoadingContext::State::BitmapDecoded) {
         bool success = decode_dds(*m_context);
         if (!success)
-            return Error::from_string_literal("DDSImageDecoderPlugin: Decoding failed"sv);
+            return Error::from_string_literal("DDSImageDecoderPlugin: Decoding failed");
     }
 
     VERIFY(m_context->bitmap);

+ 23 - 23
Userland/Libraries/LibGfx/Font/TrueType/Font.cpp

@@ -168,22 +168,22 @@ Optional<Name> Name::from_slice(ReadonlyBytes slice)
 ErrorOr<Kern> Kern::from_slice(ReadonlyBytes slice)
 {
     if (slice.size() < sizeof(u32))
-        return Error::from_string_literal("Invalid kern table header"sv);
+        return Error::from_string_literal("Invalid kern table header");
 
     // We only support the old (2x u16) version of the header
     auto version = be_u16(slice.data());
     auto number_of_subtables = be_u16(slice.offset(sizeof(u16)));
     if (version != 0)
-        return Error::from_string_literal("Unsupported kern table version"sv);
+        return Error::from_string_literal("Unsupported kern table version");
     if (number_of_subtables == 0)
-        return Error::from_string_literal("Kern table does not contain any subtables"sv);
+        return Error::from_string_literal("Kern table does not contain any subtables");
 
     // Read all subtable offsets
     auto subtable_offsets = TRY(FixedArray<size_t>::try_create(number_of_subtables));
     size_t offset = 2 * sizeof(u16);
     for (size_t i = 0; i < number_of_subtables; ++i) {
         if (slice.size() < offset + Sizes::SubtableHeader)
-            return Error::from_string_literal("Invalid kern subtable header"sv);
+            return Error::from_string_literal("Invalid kern subtable header");
 
         subtable_offsets[i] = offset;
         auto subtable_size = be_u16(slice.offset(offset + sizeof(u16)));
@@ -365,22 +365,22 @@ ErrorOr<NonnullRefPtr<Font>> Font::try_load_from_file(String path, unsigned inde
 ErrorOr<NonnullRefPtr<Font>> Font::try_load_from_externally_owned_memory(ReadonlyBytes buffer, unsigned index)
 {
     if (buffer.size() < 4)
-        return Error::from_string_literal("Font file too small"sv);
+        return Error::from_string_literal("Font file too small");
 
     u32 tag = be_u32(buffer.data());
     if (tag == tag_from_str("ttcf")) {
         // It's a font collection
         if (buffer.size() < (u32)Sizes::TTCHeaderV1 + sizeof(u32) * (index + 1))
-            return Error::from_string_literal("Font file too small"sv);
+            return Error::from_string_literal("Font file too small");
 
         u32 offset = be_u32(buffer.offset_pointer((u32)Sizes::TTCHeaderV1 + sizeof(u32) * index));
         return try_load_from_offset(buffer, offset);
     }
     if (tag == tag_from_str("OTTO"))
-        return Error::from_string_literal("CFF fonts not supported yet"sv);
+        return Error::from_string_literal("CFF fonts not supported yet");
 
     if (tag != 0x00010000)
-        return Error::from_string_literal("Not a valid font"sv);
+        return Error::from_string_literal("Not a valid font");
 
     return try_load_from_offset(buffer, 0);
 }
@@ -389,10 +389,10 @@ ErrorOr<NonnullRefPtr<Font>> Font::try_load_from_externally_owned_memory(Readonl
 ErrorOr<NonnullRefPtr<Font>> Font::try_load_from_offset(ReadonlyBytes buffer, u32 offset)
 {
     if (Checked<u32>::addition_would_overflow(offset, (u32)Sizes::OffsetTable))
-        return Error::from_string_literal("Invalid offset in font header"sv);
+        return Error::from_string_literal("Invalid offset in font header");
 
     if (buffer.size() < offset + (u32)Sizes::OffsetTable)
-        return Error::from_string_literal("Font file too small"sv);
+        return Error::from_string_literal("Font file too small");
 
     Optional<ReadonlyBytes> opt_head_slice = {};
     Optional<ReadonlyBytes> opt_name_slice = {};
@@ -417,7 +417,7 @@ ErrorOr<NonnullRefPtr<Font>> Font::try_load_from_offset(ReadonlyBytes buffer, u3
 
     auto num_tables = be_u16(buffer.offset_pointer(offset + (u32)Offsets::NumTables));
     if (buffer.size() < offset + (u32)Sizes::OffsetTable + num_tables * (u32)Sizes::TableRecord)
-        return Error::from_string_literal("Font file too small"sv);
+        return Error::from_string_literal("Font file too small");
 
     for (auto i = 0; i < num_tables; i++) {
         u32 record_offset = offset + (u32)Sizes::OffsetTable + i * (u32)Sizes::TableRecord;
@@ -426,10 +426,10 @@ ErrorOr<NonnullRefPtr<Font>> Font::try_load_from_offset(ReadonlyBytes buffer, u3
         u32 table_length = be_u32(buffer.offset_pointer(record_offset + (u32)Offsets::TableRecord_Length));
 
         if (Checked<u32>::addition_would_overflow(table_offset, table_length))
-            return Error::from_string_literal("Invalid table offset or length in font"sv);
+            return Error::from_string_literal("Invalid table offset or length in font");
 
         if (buffer.size() < table_offset + table_length)
-            return Error::from_string_literal("Font file too small"sv);
+            return Error::from_string_literal("Font file too small");
 
         auto buffer_here = ReadonlyBytes(buffer.offset_pointer(table_offset), table_length);
 
@@ -458,39 +458,39 @@ ErrorOr<NonnullRefPtr<Font>> Font::try_load_from_offset(ReadonlyBytes buffer, u3
     }
 
     if (!opt_head_slice.has_value() || !(opt_head = Head::from_slice(opt_head_slice.value())).has_value())
-        return Error::from_string_literal("Could not load Head"sv);
+        return Error::from_string_literal("Could not load Head");
     auto head = opt_head.value();
 
     if (!opt_name_slice.has_value() || !(opt_name = Name::from_slice(opt_name_slice.value())).has_value())
-        return Error::from_string_literal("Could not load Name"sv);
+        return Error::from_string_literal("Could not load Name");
     auto name = opt_name.value();
 
     if (!opt_hhea_slice.has_value() || !(opt_hhea = Hhea::from_slice(opt_hhea_slice.value())).has_value())
-        return Error::from_string_literal("Could not load Hhea"sv);
+        return Error::from_string_literal("Could not load Hhea");
     auto hhea = opt_hhea.value();
 
     if (!opt_maxp_slice.has_value() || !(opt_maxp = Maxp::from_slice(opt_maxp_slice.value())).has_value())
-        return Error::from_string_literal("Could not load Maxp"sv);
+        return Error::from_string_literal("Could not load Maxp");
     auto maxp = opt_maxp.value();
 
     if (!opt_hmtx_slice.has_value() || !(opt_hmtx = Hmtx::from_slice(opt_hmtx_slice.value(), maxp.num_glyphs(), hhea.number_of_h_metrics())).has_value())
-        return Error::from_string_literal("Could not load Hmtx"sv);
+        return Error::from_string_literal("Could not load Hmtx");
     auto hmtx = opt_hmtx.value();
 
     if (!opt_cmap_slice.has_value() || !(opt_cmap = Cmap::from_slice(opt_cmap_slice.value())).has_value())
-        return Error::from_string_literal("Could not load Cmap"sv);
+        return Error::from_string_literal("Could not load Cmap");
     auto cmap = opt_cmap.value();
 
     if (!opt_loca_slice.has_value() || !(opt_loca = Loca::from_slice(opt_loca_slice.value(), maxp.num_glyphs(), head.index_to_loc_format())).has_value())
-        return Error::from_string_literal("Could not load Loca"sv);
+        return Error::from_string_literal("Could not load Loca");
     auto loca = opt_loca.value();
 
     if (!opt_glyf_slice.has_value())
-        return Error::from_string_literal("Could not load Glyf"sv);
+        return Error::from_string_literal("Could not load Glyf");
     auto glyf = Glyf(opt_glyf_slice.value());
 
     if (!opt_os2_slice.has_value())
-        return Error::from_string_literal("Could not load OS/2"sv);
+        return Error::from_string_literal("Could not load OS/2");
     auto os2 = OS2(opt_os2_slice.value());
 
     Optional<Kern> kern {};
@@ -507,7 +507,7 @@ ErrorOr<NonnullRefPtr<Font>> Font::try_load_from_offset(ReadonlyBytes buffer, u3
         auto subtable = opt_subtable.value();
         auto platform = subtable.platform_id();
         if (!platform.has_value())
-            return Error::from_string_literal("Invalid Platform ID"sv);
+            return Error::from_string_literal("Invalid Platform ID");
 
         if (platform.value() == Cmap::Subtable::Platform::Windows) {
             if (subtable.encoding_id() == (u16)Cmap::Subtable::WindowsEncoding::UnicodeFullRepertoire) {

+ 13 - 13
Userland/Libraries/LibGfx/Font/WOFF/Font.cpp

@@ -60,12 +60,12 @@ ErrorOr<NonnullRefPtr<Font>> Font::try_load_from_externally_owned_memory(Readonl
 {
     // https://www.w3.org/TR/WOFF/#WOFFHeader
     if (buffer.size() < WOFF_HEADER_SIZE)
-        return Error::from_string_literal("WOFF file too small"sv);
+        return Error::from_string_literal("WOFF file too small");
 
     // The signature field in the WOFF header MUST contain the "magic number" 0x774F4646. If the field does not contain this value, user agents MUST reject the file as invalid.
     u32 signature = be_u32(buffer.data());
     if (signature != WOFF_SIGNATURE)
-        return Error::from_string_literal("Invalid WOFF signature"sv);
+        return Error::from_string_literal("Invalid WOFF signature");
     // The flavor field corresponds to the "sfnt version" field found at the beginning of an sfnt file,
     // indicating the type of font data contained. Although only fonts of type 0x00010000 (the version number 1.0 as a 16.16 fixed-point value, indicating TrueType glyph data)
     // and 0x4F54544F (the tag 'OTTO', indicating CFF glyph data) are widely supported at present,
@@ -85,17 +85,17 @@ ErrorOr<NonnullRefPtr<Font>> Font::try_load_from_externally_owned_memory(Readonl
     u32 priv_offset = be_u32(buffer.offset(36)); // Offset to private data block, from beginning of WOFF file.
     u32 priv_length = be_u32(buffer.offset(40)); // Length of private data block.
     if (length > buffer.size())
-        return Error::from_string_literal("Invalid WOFF length"sv);
+        return Error::from_string_literal("Invalid WOFF length");
     if (reserved != 0)
-        return Error::from_string_literal("Invalid WOFF reserved field"sv);
+        return Error::from_string_literal("Invalid WOFF reserved field");
     if (meta_length == 0 && meta_offset != 0)
-        return Error::from_string_literal("Invalid WOFF meta block offset"sv);
+        return Error::from_string_literal("Invalid WOFF meta block offset");
     if (priv_length == 0 && priv_offset != 0)
-        return Error::from_string_literal("Invalid WOFF private block offset"sv);
+        return Error::from_string_literal("Invalid WOFF private block offset");
     if (WOFF_HEADER_SIZE + num_tables * WOFF_TABLE_SIZE > length)
-        return Error::from_string_literal("Truncated WOFF table directory"sv);
+        return Error::from_string_literal("Truncated WOFF table directory");
     if (total_sfnt_size > 10 * MiB)
-        return Error::from_string_literal("Uncompressed font is more than 10 MiB"sv);
+        return Error::from_string_literal("Uncompressed font is more than 10 MiB");
     auto font_buffer = TRY(ByteBuffer::create_zeroed(total_sfnt_size));
 
     // ISO-IEC 14496-22:2019 4.5.1 Offset table
@@ -116,19 +116,19 @@ ErrorOr<NonnullRefPtr<Font>> Font::try_load_from_externally_owned_memory(Readonl
         u32 orig_checksum = be_u32(buffer.offset(base_offset + 16));
 
         if ((size_t)offset + comp_length > length)
-            return Error::from_string_literal("Truncated WOFF table"sv);
+            return Error::from_string_literal("Truncated WOFF table");
         if (font_buffer_offset + orig_length > font_buffer.size())
-            return Error::from_string_literal("Uncompressed WOFF table too big"sv);
+            return Error::from_string_literal("Uncompressed WOFF table too big");
         if (comp_length < orig_length) {
             auto decompressed = Compress::Zlib::decompress_all(buffer.slice(offset, comp_length));
             if (!decompressed.has_value())
-                return Error::from_string_literal("Could not decompress WOFF table"sv);
+                return Error::from_string_literal("Could not decompress WOFF table");
             if (orig_length != decompressed->size())
-                return Error::from_string_literal("Invalid decompressed WOFF table length"sv);
+                return Error::from_string_literal("Invalid decompressed WOFF table length");
             font_buffer.overwrite(font_buffer_offset, decompressed->data(), orig_length);
         } else {
             if (comp_length != orig_length)
-                return Error::from_string_literal("Invalid uncompressed WOFF table length"sv);
+                return Error::from_string_literal("Invalid uncompressed WOFF table length");
             font_buffer.overwrite(font_buffer_offset, buffer.data() + offset, orig_length);
         }
 

+ 3 - 3
Userland/Libraries/LibGfx/GIFLoader.cpp

@@ -695,20 +695,20 @@ size_t GIFImageDecoderPlugin::frame_count()
 ErrorOr<ImageFrameDescriptor> GIFImageDecoderPlugin::frame(size_t index)
 {
     if (m_context->error_state >= GIFLoadingContext::ErrorState::FailedToDecodeAnyFrame) {
-        return Error::from_string_literal("GIFImageDecoderPlugin: Decoding failed"sv);
+        return Error::from_string_literal("GIFImageDecoderPlugin: Decoding failed");
     }
 
     if (m_context->state < GIFLoadingContext::State::FrameDescriptorsLoaded) {
         if (!load_gif_frame_descriptors(*m_context)) {
             m_context->error_state = GIFLoadingContext::ErrorState::FailedToLoadFrameDescriptors;
-            return Error::from_string_literal("GIFImageDecoderPlugin: Decoding failed"sv);
+            return Error::from_string_literal("GIFImageDecoderPlugin: Decoding failed");
         }
     }
 
     if (m_context->error_state == GIFLoadingContext::ErrorState::NoError && !decode_frame(*m_context, index)) {
         if (m_context->state < GIFLoadingContext::State::FrameComplete || !decode_frame(*m_context, 0)) {
             m_context->error_state = GIFLoadingContext::ErrorState::FailedToDecodeAnyFrame;
-            return Error::from_string_literal("GIFImageDecoderPlugin: Decoding failed"sv);
+            return Error::from_string_literal("GIFImageDecoderPlugin: Decoding failed");
         }
         m_context->error_state = GIFLoadingContext::ErrorState::FailedToDecodeAllFrames;
     }

+ 3 - 3
Userland/Libraries/LibGfx/ICOLoader.cpp

@@ -342,17 +342,17 @@ size_t ICOImageDecoderPlugin::frame_count()
 ErrorOr<ImageFrameDescriptor> ICOImageDecoderPlugin::frame(size_t index)
 {
     if (index > 0)
-        return Error::from_string_literal("ICOImageDecoderPlugin: Invalid frame index"sv);
+        return Error::from_string_literal("ICOImageDecoderPlugin: Invalid frame index");
 
     if (m_context->state == ICOLoadingContext::State::Error)
-        return Error::from_string_literal("ICOImageDecoderPlugin: Decoding failed"sv);
+        return Error::from_string_literal("ICOImageDecoderPlugin: Decoding failed");
 
     if (m_context->state < ICOLoadingContext::State::BitmapDecoded) {
         // NOTE: This forces the chunk decoding to happen.
         bool success = load_ico_bitmap(*m_context, {});
         if (!success) {
             m_context->state = ICOLoadingContext::State::Error;
-            return Error::from_string_literal("ICOImageDecoderPlugin: Decoding failed"sv);
+            return Error::from_string_literal("ICOImageDecoderPlugin: Decoding failed");
         }
         m_context->state = ICOLoadingContext::State::BitmapDecoded;
     }

+ 3 - 3
Userland/Libraries/LibGfx/JPGLoader.cpp

@@ -1285,15 +1285,15 @@ size_t JPGImageDecoderPlugin::frame_count()
 ErrorOr<ImageFrameDescriptor> JPGImageDecoderPlugin::frame(size_t index)
 {
     if (index > 0)
-        return Error::from_string_literal("JPGImageDecoderPlugin: Invalid frame index"sv);
+        return Error::from_string_literal("JPGImageDecoderPlugin: Invalid frame index");
 
     if (m_context->state == JPGLoadingContext::State::Error)
-        return Error::from_string_literal("JPGImageDecoderPlugin: Decoding failed"sv);
+        return Error::from_string_literal("JPGImageDecoderPlugin: Decoding failed");
 
     if (m_context->state < JPGLoadingContext::State::BitmapDecoded) {
         if (!decode_jpg(*m_context)) {
             m_context->state = JPGLoadingContext::State::Error;
-            return Error::from_string_literal("JPGImageDecoderPlugin: Decoding failed"sv);
+            return Error::from_string_literal("JPGImageDecoderPlugin: Decoding failed");
         }
         m_context->state = JPGLoadingContext::State::BitmapDecoded;
     }

+ 17 - 17
Userland/Libraries/LibGfx/PNGLoader.cpp

@@ -407,7 +407,7 @@ NEVER_INLINE FLATTEN static ErrorOr<void> unfilter(PNGLoadingContext& context)
                 for (int i = 0; i < context.width; ++i) {
                     auto& pixel = (Pixel&)context.bitmap->scanline(y)[i];
                     if (palette_index[i] >= context.palette_data.size())
-                        return Error::from_string_literal("PNGImageDecoderPlugin: Palette index out of range"sv);
+                        return Error::from_string_literal("PNGImageDecoderPlugin: Palette index out of range");
                     auto& color = context.palette_data.at((int)palette_index[i]);
                     auto transparency = context.palette_transparency_data.size() >= palette_index[i] + 1u
                         ? context.palette_transparency_data.data()[palette_index[i]]
@@ -428,7 +428,7 @@ NEVER_INLINE FLATTEN static ErrorOr<void> unfilter(PNGLoadingContext& context)
                     auto palette_index = (palette_indices[i / pixels_per_byte] >> bit_offset) & mask;
                     auto& pixel = (Pixel&)context.bitmap->scanline(y)[i];
                     if ((size_t)palette_index >= context.palette_data.size())
-                        return Error::from_string_literal("PNGImageDecoderPlugin: Palette index out of range"sv);
+                        return Error::from_string_literal("PNGImageDecoderPlugin: Palette index out of range");
                     auto& color = context.palette_data.at(palette_index);
                     auto transparency = context.palette_transparency_data.size() >= palette_index + 1u
                         ? context.palette_transparency_data.data()[palette_index]
@@ -578,23 +578,23 @@ static ErrorOr<void> decode_png_bitmap_simple(PNGLoadingContext& context)
         PNG::FilterType filter;
         if (!streamer.read(filter)) {
             context.state = PNGLoadingContext::State::Error;
-            return Error::from_string_literal("PNGImageDecoderPlugin: Decoding failed"sv);
+            return Error::from_string_literal("PNGImageDecoderPlugin: Decoding failed");
         }
 
         if (to_underlying(filter) > 4) {
             context.state = PNGLoadingContext::State::Error;
-            return Error::from_string_literal("PNGImageDecoderPlugin: Invalid PNG filter"sv);
+            return Error::from_string_literal("PNGImageDecoderPlugin: Invalid PNG filter");
         }
 
         context.scanlines.append({ filter });
         auto& scanline_buffer = context.scanlines.last().data;
         auto row_size = context.compute_row_size_for_width(context.width);
         if (row_size.has_overflow())
-            return Error::from_string_literal("PNGImageDecoderPlugin: Row size overflow"sv);
+            return Error::from_string_literal("PNGImageDecoderPlugin: Row size overflow");
 
         if (!streamer.wrap_bytes(scanline_buffer, row_size.value())) {
             context.state = PNGLoadingContext::State::Error;
-            return Error::from_string_literal("PNGImageDecoderPlugin: Decoding failed"sv);
+            return Error::from_string_literal("PNGImageDecoderPlugin: Decoding failed");
         }
     }
 
@@ -673,12 +673,12 @@ static ErrorOr<void> decode_adam7_pass(PNGLoadingContext& context, Streamer& str
         PNG::FilterType filter;
         if (!streamer.read(filter)) {
             context.state = PNGLoadingContext::State::Error;
-            return Error::from_string_literal("PNGImageDecoderPlugin: Decoding failed"sv);
+            return Error::from_string_literal("PNGImageDecoderPlugin: Decoding failed");
         }
 
         if (to_underlying(filter) > 4) {
             context.state = PNGLoadingContext::State::Error;
-            return Error::from_string_literal("PNGImageDecoderPlugin: Invalid PNG filter"sv);
+            return Error::from_string_literal("PNGImageDecoderPlugin: Invalid PNG filter");
         }
 
         subimage_context.scanlines.append({ filter });
@@ -686,10 +686,10 @@ static ErrorOr<void> decode_adam7_pass(PNGLoadingContext& context, Streamer& str
 
         auto row_size = context.compute_row_size_for_width(subimage_context.width);
         if (row_size.has_overflow())
-            return Error::from_string_literal("PNGImageDecoderPlugin: Row size overflow"sv);
+            return Error::from_string_literal("PNGImageDecoderPlugin: Row size overflow");
         if (!streamer.wrap_bytes(scanline_buffer, row_size.value())) {
             context.state = PNGLoadingContext::State::Error;
-            return Error::from_string_literal("PNGImageDecoderPlugin: Decoding failed"sv);
+            return Error::from_string_literal("PNGImageDecoderPlugin: Decoding failed");
         }
     }
 
@@ -718,22 +718,22 @@ static ErrorOr<void> decode_png_bitmap(PNGLoadingContext& context)
 {
     if (context.state < PNGLoadingContext::State::ChunksDecoded) {
         if (!decode_png_chunks(context))
-            return Error::from_string_literal("PNGImageDecoderPlugin: Decoding failed"sv);
+            return Error::from_string_literal("PNGImageDecoderPlugin: Decoding failed");
     }
 
     if (context.state >= PNGLoadingContext::State::BitmapDecoded)
         return {};
 
     if (context.width == -1 || context.height == -1)
-        return Error::from_string_literal("PNGImageDecoderPlugin: Didn't see an IHDR chunk."sv);
+        return Error::from_string_literal("PNGImageDecoderPlugin: Didn't see an IHDR chunk.");
 
     if (context.color_type == PNG::ColorType::IndexedColor && context.palette_data.is_empty())
-        return Error::from_string_literal("PNGImageDecoderPlugin: Didn't see a PLTE chunk for a palletized image, or it was empty."sv);
+        return Error::from_string_literal("PNGImageDecoderPlugin: Didn't see a PLTE chunk for a palletized image, or it was empty.");
 
     auto result = Compress::Zlib::decompress_all(context.compressed_data.span());
     if (!result.has_value()) {
         context.state = PNGLoadingContext::State::Error;
-        return Error::from_string_literal("PNGImageDecoderPlugin: Decompression failed"sv);
+        return Error::from_string_literal("PNGImageDecoderPlugin: Decompression failed");
     }
     context.decompression_buffer = &result.value();
     context.compressed_data.clear();
@@ -748,7 +748,7 @@ static ErrorOr<void> decode_png_bitmap(PNGLoadingContext& context)
         break;
     default:
         context.state = PNGLoadingContext::State::Error;
-        return Error::from_string_literal("PNGImageDecoderPlugin: Invalid interlace method"sv);
+        return Error::from_string_literal("PNGImageDecoderPlugin: Invalid interlace method");
     }
 
     context.decompression_buffer = nullptr;
@@ -960,10 +960,10 @@ size_t PNGImageDecoderPlugin::frame_count()
 ErrorOr<ImageFrameDescriptor> PNGImageDecoderPlugin::frame(size_t index)
 {
     if (index > 0)
-        return Error::from_string_literal("PNGImageDecoderPlugin: Invalid frame index"sv);
+        return Error::from_string_literal("PNGImageDecoderPlugin: Invalid frame index");
 
     if (m_context->state == PNGLoadingContext::State::Error)
-        return Error::from_string_literal("PNGImageDecoderPlugin: Decoding failed"sv);
+        return Error::from_string_literal("PNGImageDecoderPlugin: Decoding failed");
 
     if (m_context->state < PNGLoadingContext::State::BitmapDecoded) {
         // NOTE: This forces the chunk decoding to happen.

+ 3 - 3
Userland/Libraries/LibGfx/PortableImageMapLoader.h

@@ -145,15 +145,15 @@ template<typename TContext>
 ErrorOr<ImageFrameDescriptor> PortableImageDecoderPlugin<TContext>::frame(size_t index)
 {
     if (index > 0)
-        return Error::from_string_literal("PortableImageDecoderPlugin: Invalid frame index"sv);
+        return Error::from_string_literal("PortableImageDecoderPlugin: Invalid frame index");
 
     if (m_context->state == TContext::State::Error)
-        return Error::from_string_literal("PortableImageDecoderPlugin: Decoding failed"sv);
+        return Error::from_string_literal("PortableImageDecoderPlugin: Decoding failed");
 
     if (m_context->state < TContext::State::Decoded) {
         bool success = decode(*m_context);
         if (!success)
-            return Error::from_string_literal("PortableImageDecoderPlugin: Decoding failed"sv);
+            return Error::from_string_literal("PortableImageDecoderPlugin: Decoding failed");
     }
 
     VERIFY(m_context->bitmap);

+ 17 - 17
Userland/Libraries/LibGfx/QOILoader.cpp

@@ -26,9 +26,9 @@ static ErrorOr<QOIHeader> decode_qoi_header(InputMemoryStream& stream)
     QOIHeader header;
     stream >> Bytes { &header, sizeof(header) };
     if (stream.handle_any_error())
-        return Error::from_string_literal("Invalid QOI image: end of stream while reading header"sv);
+        return Error::from_string_literal("Invalid QOI image: end of stream while reading header");
     if (StringView { header.magic, array_size(header.magic) } != QOI_MAGIC)
-        return Error::from_string_literal("Invalid QOI image: incorrect header magic"sv);
+        return Error::from_string_literal("Invalid QOI image: incorrect header magic");
     header.width = AK::convert_between_host_and_big_endian(header.width);
     header.height = AK::convert_between_host_and_big_endian(header.height);
     return header;
@@ -39,7 +39,7 @@ static ErrorOr<Color> decode_qoi_op_rgb(InputMemoryStream& stream, Color pixel)
     u8 bytes[4];
     stream >> Bytes { &bytes, array_size(bytes) };
     if (stream.handle_any_error())
-        return Error::from_string_literal("Invalid QOI image: end of stream while reading QOI_OP_RGB chunk"sv);
+        return Error::from_string_literal("Invalid QOI image: end of stream while reading QOI_OP_RGB chunk");
     VERIFY(bytes[0] == QOI_OP_RGB);
 
     // The alpha value remains unchanged from the previous pixel.
@@ -51,7 +51,7 @@ static ErrorOr<Color> decode_qoi_op_rgba(InputMemoryStream& stream)
     u8 bytes[5];
     stream >> Bytes { &bytes, array_size(bytes) };
     if (stream.handle_any_error())
-        return Error::from_string_literal("Invalid QOI image: end of stream while reading QOI_OP_RGBA chunk"sv);
+        return Error::from_string_literal("Invalid QOI image: end of stream while reading QOI_OP_RGBA chunk");
     VERIFY(bytes[0] == QOI_OP_RGBA);
     return Color { bytes[1], bytes[2], bytes[3], bytes[4] };
 }
@@ -61,7 +61,7 @@ static ErrorOr<u8> decode_qoi_op_index(InputMemoryStream& stream)
     u8 byte;
     stream >> byte;
     if (stream.handle_any_error())
-        return Error::from_string_literal("Invalid QOI image: end of stream while reading QOI_OP_INDEX chunk"sv);
+        return Error::from_string_literal("Invalid QOI image: end of stream while reading QOI_OP_INDEX chunk");
     VERIFY((byte & QOI_MASK_2) == QOI_OP_INDEX);
     u8 index = byte & ~QOI_MASK_2;
     VERIFY(index <= 63);
@@ -73,7 +73,7 @@ static ErrorOr<Color> decode_qoi_op_diff(InputMemoryStream& stream, Color pixel)
     u8 byte;
     stream >> byte;
     if (stream.handle_any_error())
-        return Error::from_string_literal("Invalid QOI image: end of stream while reading QOI_OP_DIFF chunk"sv);
+        return Error::from_string_literal("Invalid QOI image: end of stream while reading QOI_OP_DIFF chunk");
     VERIFY((byte & QOI_MASK_2) == QOI_OP_DIFF);
     u8 dr = (byte & 0b00110000) >> 4;
     u8 dg = (byte & 0b00001100) >> 2;
@@ -94,7 +94,7 @@ static ErrorOr<Color> decode_qoi_op_luma(InputMemoryStream& stream, Color pixel)
     u8 bytes[2];
     stream >> Bytes { &bytes, array_size(bytes) };
     if (stream.handle_any_error())
-        return Error::from_string_literal("Invalid QOI image: end of stream while reading QOI_OP_LUMA chunk"sv);
+        return Error::from_string_literal("Invalid QOI image: end of stream while reading QOI_OP_LUMA chunk");
     VERIFY((bytes[0] & QOI_MASK_2) == QOI_OP_LUMA);
     u8 diff_green = (bytes[0] & ~QOI_MASK_2);
     u8 dr_dg = (bytes[1] & 0b11110000) >> 4;
@@ -114,7 +114,7 @@ static ErrorOr<u8> decode_qoi_op_run(InputMemoryStream& stream)
     u8 byte;
     stream >> byte;
     if (stream.handle_any_error())
-        return Error::from_string_literal("Invalid QOI image: end of stream while reading QOI_OP_RUN chunk"sv);
+        return Error::from_string_literal("Invalid QOI image: end of stream while reading QOI_OP_RUN chunk");
     VERIFY((byte & QOI_MASK_2) == QOI_OP_RUN);
     u8 run = byte & ~QOI_MASK_2;
 
@@ -123,7 +123,7 @@ static ErrorOr<u8> decode_qoi_op_run(InputMemoryStream& stream)
 
     // Note that the run-lengths 63 and 64 (b111110 and b111111) are illegal as they are occupied by the QOI_OP_RGB and QOI_OP_RGBA tags.
     if (run == QOI_OP_RGB || run == QOI_OP_RGBA)
-        return Error::from_string_literal("Invalid QOI image: illegal run length"sv);
+        return Error::from_string_literal("Invalid QOI image: illegal run length");
 
     VERIFY(run >= 1 && run <= 62);
     return run;
@@ -134,11 +134,11 @@ static ErrorOr<void> decode_qoi_end_marker(InputMemoryStream& stream)
     u8 bytes[array_size(END_MARKER)];
     stream >> Bytes { &bytes, array_size(bytes) };
     if (stream.handle_any_error())
-        return Error::from_string_literal("Invalid QOI image: end of stream while reading end marker"sv);
+        return Error::from_string_literal("Invalid QOI image: end of stream while reading end marker");
     if (!stream.eof())
-        return Error::from_string_literal("Invalid QOI image: expected end of stream but more bytes are available"sv);
+        return Error::from_string_literal("Invalid QOI image: expected end of stream but more bytes are available");
     if (memcmp(&END_MARKER, &bytes, array_size(bytes)) != 0)
-        return Error::from_string_literal("Invalid QOI image: incorrect end marker"sv);
+        return Error::from_string_literal("Invalid QOI image: incorrect end marker");
     return {};
 }
 
@@ -146,9 +146,9 @@ static ErrorOr<NonnullRefPtr<Bitmap>> decode_qoi_image(InputMemoryStream& stream
 {
     // FIXME: Why is Gfx::Bitmap's size signed? Makes no sense whatsoever.
     if (width > NumericLimits<int>::max())
-        return Error::from_string_literal("Cannot create bitmap for QOI image of valid size, width exceeds maximum Gfx::Bitmap width"sv);
+        return Error::from_string_literal("Cannot create bitmap for QOI image of valid size, width exceeds maximum Gfx::Bitmap width");
     if (height > NumericLimits<int>::max())
-        return Error::from_string_literal("Cannot create bitmap for QOI image of valid size, height exceeds maximum Gfx::Bitmap height"sv);
+        return Error::from_string_literal("Cannot create bitmap for QOI image of valid size, height exceeds maximum Gfx::Bitmap height");
 
     auto bitmap = TRY(Bitmap::try_create(BitmapFormat::BGRA8888, { width, height }));
 
@@ -163,7 +163,7 @@ static ErrorOr<NonnullRefPtr<Bitmap>> decode_qoi_image(InputMemoryStream& stream
             if (run == 0) {
                 u8 tag = stream.peek_or_error();
                 if (stream.handle_any_error())
-                    return Error::from_string_literal("Invalid QOI image: end of stream while reading chunk tag"sv);
+                    return Error::from_string_literal("Invalid QOI image: end of stream while reading chunk tag");
                 if (tag == QOI_OP_RGB)
                     pixel = TRY(decode_qoi_op_rgb(stream, pixel));
                 else if (tag == QOI_OP_RGBA)
@@ -177,7 +177,7 @@ static ErrorOr<NonnullRefPtr<Bitmap>> decode_qoi_image(InputMemoryStream& stream
                 else if ((tag & QOI_MASK_2) == QOI_OP_RUN)
                     run = TRY(decode_qoi_op_run(stream));
                 else
-                    return Error::from_string_literal("Invalid QOI image: unknown chunk tag"sv);
+                    return Error::from_string_literal("Invalid QOI image: unknown chunk tag");
             }
             auto index_position = (pixel.red() * 3 + pixel.green() * 5 + pixel.blue() * 7 + pixel.alpha() * 11) % 64;
             previous_pixels[index_position] = pixel;
@@ -232,7 +232,7 @@ bool QOIImageDecoderPlugin::sniff()
 ErrorOr<ImageFrameDescriptor> QOIImageDecoderPlugin::frame(size_t index)
 {
     if (index > 0)
-        return Error::from_string_literal("Invalid frame index"sv);
+        return Error::from_string_literal("Invalid frame index");
 
     if (m_context->state == QOILoadingContext::State::NotDecoded) {
         InputMemoryStream stream { { m_context->data, m_context->data_size } };

+ 1 - 1
Userland/Libraries/LibGfx/ShareableBitmap.cpp

@@ -56,7 +56,7 @@ ErrorOr<void> decode(Decoder& decoder, Gfx::ShareableBitmap& shareable_bitmap)
     u32 raw_bitmap_format;
     TRY(decoder.decode(raw_bitmap_format));
     if (!Gfx::is_valid_bitmap_format(raw_bitmap_format))
-        return Error::from_string_literal("IPC: Invalid Gfx::ShareableBitmap format"sv);
+        return Error::from_string_literal("IPC: Invalid Gfx::ShareableBitmap format");
     auto bitmap_format = (Gfx::BitmapFormat)raw_bitmap_format;
     Vector<Gfx::ARGB32> palette;
     if (Gfx::Bitmap::is_indexed(bitmap_format)) {

+ 5 - 5
Userland/Libraries/LibIPC/Connection.cpp

@@ -30,7 +30,7 @@ ErrorOr<void> ConnectionBase::post_message(MessageBuffer buffer)
     // NOTE: If this connection is being shut down, but has not yet been destroyed,
     //       the socket will be closed. Don't try to send more messages.
     if (!m_socket->is_open())
-        return Error::from_string_literal("Trying to post_message during IPC shutdown"sv);
+        return Error::from_string_literal("Trying to post_message during IPC shutdown");
 
     // Prepend the message size.
     uint32_t message_size = buffer.data.size();
@@ -57,9 +57,9 @@ ErrorOr<void> ConnectionBase::post_message(MessageBuffer buffer)
                 shutdown_with_error(error);
                 switch (error.code()) {
                 case EPIPE:
-                    return Error::from_string_literal("IPC::Connection::post_message: Disconnected from peer"sv);
+                    return Error::from_string_literal("IPC::Connection::post_message: Disconnected from peer");
                 case EAGAIN:
-                    return Error::from_string_literal("IPC::Connection::post_message: Peer buffer overflowed"sv);
+                    return Error::from_string_literal("IPC::Connection::post_message: Peer buffer overflowed");
                 default:
                     return Error::from_syscall("IPC::Connection::post_message write"sv, -error.code());
                 }
@@ -141,7 +141,7 @@ ErrorOr<Vector<u8>> ConnectionBase::read_as_much_as_possible_from_socket_without
             deferred_invoke([this] { shutdown(); });
             if (!bytes.is_empty())
                 break;
-            return Error::from_string_literal("IPC connection EOF"sv);
+            return Error::from_string_literal("IPC connection EOF");
         }
 
         bytes.append(bytes_read.data(), bytes_read.size());
@@ -169,7 +169,7 @@ ErrorOr<void> ConnectionBase::drain_messages_from_peer()
         auto remaining_bytes = TRY(ByteBuffer::copy(bytes.span().slice(index)));
         if (!m_unprocessed_bytes.is_empty()) {
             shutdown();
-            return Error::from_string_literal("drain_messages_from_peer: Already have unprocessed bytes"sv);
+            return Error::from_string_literal("drain_messages_from_peer: Already have unprocessed bytes");
         }
         m_unprocessed_bytes = move(remaining_bytes);
     }

+ 3 - 3
Userland/Libraries/LibIPC/Decoder.h

@@ -58,7 +58,7 @@ public:
         u32 size;
         TRY(decode(size));
         if (size > NumericLimits<i32>::max())
-            return Error::from_string_literal("IPC: Invalid HashMap size"sv);
+            return Error::from_string_literal("IPC: Invalid HashMap size");
 
         for (size_t i = 0; i < size; ++i) {
             K key;
@@ -76,7 +76,7 @@ public:
         u32 size;
         TRY(decode(size));
         if (size > NumericLimits<i32>::max())
-            return Error::from_string_literal("IPC: Invalid HashMap size"sv);
+            return Error::from_string_literal("IPC: Invalid HashMap size");
 
         for (size_t i = 0; i < size; ++i) {
             K key;
@@ -109,7 +109,7 @@ public:
         u64 size;
         TRY(decode(size));
         if (size > NumericLimits<i32>::max())
-            return Error::from_string_literal("IPC: Invalid Vector size"sv);
+            return Error::from_string_literal("IPC: Invalid Vector size");
         VERIFY(vector.is_empty());
         TRY(vector.try_ensure_capacity(size));
         for (size_t i = 0; i < size; ++i) {

+ 3 - 3
Userland/Libraries/LibSQL/Database.cpp

@@ -90,7 +90,7 @@ ErrorOr<void> Database::add_schema(SchemaDef const& schema)
     VERIFY(is_open());
     if (!m_schemas->insert(schema.key())) {
         warnln("Duplicate schema name {}"sv, schema.name());
-        return Error::from_string_literal("Duplicate schema name"sv);
+        return Error::from_string_literal("Duplicate schema name");
     }
     return {};
 }
@@ -127,7 +127,7 @@ ErrorOr<void> Database::add_table(TableDef& table)
     VERIFY(is_open());
     if (!m_tables->insert(table.key())) {
         warnln("Duplicate table name '{}'.'{}'"sv, table.parent()->name(), table.name());
-        return Error::from_string_literal("Duplicate table name"sv);
+        return Error::from_string_literal("Duplicate table name");
     }
     for (auto& column : table.columns()) {
         VERIFY(m_table_columns->insert(column.key()));
@@ -159,7 +159,7 @@ ErrorOr<RefPtr<TableDef>> Database::get_table(String const& schema, String const
     auto schema_def = TRY(get_schema(schema));
     if (!schema_def) {
         warnln("Schema '{}' does not exist"sv, schema);
-        return Error::from_string_literal("Schema does not exist"sv);
+        return Error::from_string_literal("Schema does not exist");
     }
     auto ret = TableDef::construct(schema_def, name);
     ret->set_pointer((*table_iterator).pointer());

+ 16 - 16
Userland/Libraries/LibSQL/Heap.cpp

@@ -35,11 +35,11 @@ ErrorOr<void> Heap::open()
     if (stat(name().characters(), &stat_buffer) != 0) {
         if (errno != ENOENT) {
             warnln("Heap::open({}): could not stat: {}"sv, name(), strerror(errno));
-            return Error::from_string_literal("Heap::open(): could not stat file"sv);
+            return Error::from_string_literal("Heap::open(): could not stat file");
         }
     } else if (!S_ISREG(stat_buffer.st_mode)) {
         warnln("Heap::open({}): can only use regular files"sv, name());
-        return Error::from_string_literal("Heap::open(): can only use regular files"sv);
+        return Error::from_string_literal("Heap::open(): can only use regular files");
     } else {
         file_size = stat_buffer.st_size;
     }
@@ -49,7 +49,7 @@ ErrorOr<void> Heap::open()
     auto file_or_error = Core::File::open(name(), Core::OpenMode::ReadWrite);
     if (file_or_error.is_error()) {
         warnln("Heap::open({}): could not open: {}"sv, name(), file_or_error.error());
-        return Error::from_string_literal("Heap::open(): could not open file"sv);
+        return Error::from_string_literal("Heap::open(): could not open file");
     }
     m_file = file_or_error.value();
     if (file_size > 0) {
@@ -68,7 +68,7 @@ ErrorOr<ByteBuffer> Heap::read_block(u32 block)
 {
     if (m_file.is_null()) {
         warnln("Heap({})::read_block({}): Heap file not opened"sv, name(), block);
-        return Error::from_string_literal("Heap()::read_block(): Heap file not opened"sv);
+        return Error::from_string_literal("Heap()::read_block(): Heap file not opened");
     }
     auto buffer_or_empty = m_write_ahead_log.get(block);
     if (buffer_or_empty.has_value())
@@ -76,14 +76,14 @@ ErrorOr<ByteBuffer> Heap::read_block(u32 block)
 
     if (block >= m_next_block) {
         warnln("Heap({})::read_block({}): block # out of range (>= {})"sv, name(), block, m_next_block);
-        return Error::from_string_literal("Heap()::read_block(): block # out of range"sv);
+        return Error::from_string_literal("Heap()::read_block(): block # out of range");
     }
     dbgln_if(SQL_DEBUG, "Read heap block {}", block);
     TRY(seek_block(block));
     auto ret = m_file->read(BLOCKSIZE);
     if (ret.is_empty()) {
         warnln("Heap({})::read_block({}): Could not read block"sv, name(), block);
-        return Error::from_string_literal("Heap()::read_block(): Could not read block"sv);
+        return Error::from_string_literal("Heap()::read_block(): Could not read block");
     }
     dbgln_if(SQL_DEBUG, "{:02x} {:02x} {:02x} {:02x} {:02x} {:02x} {:02x} {:02x}",
         *ret.offset_pointer(0), *ret.offset_pointer(1),
@@ -97,23 +97,23 @@ ErrorOr<void> Heap::write_block(u32 block, ByteBuffer& buffer)
 {
     if (m_file.is_null()) {
         warnln("Heap({})::write_block({}): Heap file not opened"sv, name(), block);
-        return Error::from_string_literal("Heap()::write_block(): Heap file not opened"sv);
+        return Error::from_string_literal("Heap()::write_block(): Heap file not opened");
     }
     if (block > m_next_block) {
         warnln("Heap({})::write_block({}): block # out of range (> {})"sv, name(), block, m_next_block);
-        return Error::from_string_literal("Heap()::write_block(): block # out of range"sv);
+        return Error::from_string_literal("Heap()::write_block(): block # out of range");
     }
     TRY(seek_block(block));
     dbgln_if(SQL_DEBUG, "Write heap block {} size {}", block, buffer.size());
     if (buffer.size() > BLOCKSIZE) {
         warnln("Heap({})::write_block({}): Oversized block ({} > {})"sv, name(), block, buffer.size(), BLOCKSIZE);
-        return Error::from_string_literal("Heap()::write_block(): Oversized block"sv);
+        return Error::from_string_literal("Heap()::write_block(): Oversized block");
     }
     auto sz = buffer.size();
     if (sz < BLOCKSIZE) {
         if (buffer.try_resize(BLOCKSIZE).is_error()) {
             warnln("Heap({})::write_block({}): Could not align block of size {} to {}"sv, name(), block, buffer.size(), BLOCKSIZE);
-            return Error::from_string_literal("Heap()::write_block(): Could not align block"sv);
+            return Error::from_string_literal("Heap()::write_block(): Could not align block");
         }
         memset(buffer.offset_pointer((int)sz), 0, BLOCKSIZE - sz);
     }
@@ -128,28 +128,28 @@ ErrorOr<void> Heap::write_block(u32 block, ByteBuffer& buffer)
         return {};
     }
     warnln("Heap({})::write_block({}): Could not full write block"sv, name(), block);
-    return Error::from_string_literal("Heap()::write_block(): Could not full write block"sv);
+    return Error::from_string_literal("Heap()::write_block(): Could not full write block");
 }
 
 ErrorOr<void> Heap::seek_block(u32 block)
 {
     if (m_file.is_null()) {
         warnln("Heap({})::seek_block({}): Heap file not opened"sv, name(), block);
-        return Error::from_string_literal("Heap()::seek_block(): Heap file not opened"sv);
+        return Error::from_string_literal("Heap()::seek_block(): Heap file not opened");
     }
     if (block == m_end_of_file) {
         off_t pos;
         if (!m_file->seek(0, Core::SeekMode::FromEndPosition, &pos)) {
             warnln("Heap({})::seek_block({}): Error seeking end of file: {}"sv, name(), block, m_file->error_string());
-            return Error::from_string_literal("Heap()::seek_block(): Error seeking end of file"sv);
+            return Error::from_string_literal("Heap()::seek_block(): Error seeking end of file");
         }
     } else if (block > m_end_of_file) {
         warnln("Heap({})::seek_block({}): Cannot seek beyond end of file at block {}"sv, name(), block, m_end_of_file);
-        return Error::from_string_literal("Heap()::seek_block(): Cannot seek beyond end of file"sv);
+        return Error::from_string_literal("Heap()::seek_block(): Cannot seek beyond end of file");
     } else {
         if (!m_file->seek(block * BLOCKSIZE)) {
             warnln("Heap({})::seek_block({}): Error seeking: {}"sv, name(), block, m_file->error_string());
-            return Error::from_string_literal("Heap()::seek_block(): Error seeking: {}"sv);
+            return Error::from_string_literal("Heap()::seek_block(): Error seeking: {}");
         }
     }
     return {};
@@ -206,7 +206,7 @@ ErrorOr<void> Heap::read_zero_block()
     auto file_id = StringView(file_id_buffer);
     if (file_id != FILE_ID) {
         warnln("{}: Zero page corrupt. This is probably not a {} heap file"sv, name(), FILE_ID);
-        return Error::from_string_literal("Heap()::read_zero_block(): Zero page corrupt. This is probably not a SerenitySQL heap file"sv);
+        return Error::from_string_literal("Heap()::read_zero_block(): Zero page corrupt. This is probably not a SerenitySQL heap file");
     }
     dbgln_if(SQL_DEBUG, "Read zero block from {}", name());
     memcpy(&m_version, buffer.offset_pointer(VERSION_OFFSET), sizeof(u32));

+ 2 - 2
Userland/Libraries/LibTLS/Socket.cpp

@@ -91,7 +91,7 @@ ErrorOr<NonnullOwnPtr<TLSv12>> TLSv12::connect(String const& host, u16 port, Opt
 
     tls_socket->try_disambiguate_error();
     // FIXME: Should return richer information here.
-    return AK::Error::from_string_literal(alert_name(static_cast<AlertDescription>(256 - result)));
+    return AK::Error::from_string_view(alert_name(static_cast<AlertDescription>(256 - result)));
 }
 
 ErrorOr<NonnullOwnPtr<TLSv12>> TLSv12::connect(String const& host, Core::Stream::Socket& underlying_stream, Options options)
@@ -112,7 +112,7 @@ ErrorOr<NonnullOwnPtr<TLSv12>> TLSv12::connect(String const& host, Core::Stream:
 
     tls_socket->try_disambiguate_error();
     // FIXME: Should return richer information here.
-    return AK::Error::from_string_literal(alert_name(static_cast<AlertDescription>(256 - result)));
+    return AK::Error::from_string_view(alert_name(static_cast<AlertDescription>(256 - result)));
 }
 
 void TLSv12::setup_connection()

+ 3 - 3
Userland/Libraries/LibTLS/TLSv12.h

@@ -75,17 +75,17 @@ enum class AlertDescription : u8 {
 #undef ENUMERATE_ALERT_DESCRIPTION
 };
 
-constexpr static char const* alert_name(AlertDescription descriptor)
+constexpr static StringView alert_name(AlertDescription descriptor)
 {
 #define ENUMERATE_ALERT_DESCRIPTION(name, value) \
     case AlertDescription::name:                 \
-        return #name;
+        return #name##sv;
 
     switch (descriptor) {
         ENUMERATE_ALERT_DESCRIPTIONS
     }
 
-    return "Unknown";
+    return "Unknown"sv;
 #undef ENUMERATE_ALERT_DESCRIPTION
 }
 

+ 1 - 1
Userland/Libraries/LibWasm/AbstractMachine/Validator.h

@@ -31,7 +31,7 @@ struct Context {
 
 struct ValidationError : public Error {
     ValidationError(String error)
-        : Error(Error::from_string_literal(error))
+        : Error(Error::from_string_view(error))
         , error_string(move(error))
     {
     }

+ 1 - 1
Userland/Services/DHCPClient/DHCPv4Client.cpp

@@ -184,7 +184,7 @@ ErrorOr<DHCPv4Client::Interfaces> DHCPv4Client::get_discoverable_interfaces()
 
     if (json.is_error() || !json.value().is_array()) {
         dbgln("Error: No network adapters available");
-        return Error::from_string_literal("No network adapters available"sv);
+        return Error::from_string_literal("No network adapters available");
     }
 
     Vector<InterfaceDescriptor> ifnames_to_immediately_discover, ifnames_to_attempt_later;

+ 1 - 1
Userland/Services/WindowServer/VirtualScreenBackend.cpp

@@ -39,7 +39,7 @@ ErrorOr<void> VirtualScreenBackend::set_head_mode_setting(GraphicsHeadModeSettin
         mode_setting.horizontal_stride = static_cast<int>(mode_setting.horizontal_active * sizeof(Gfx::ARGB32));
     m_pitch = mode_setting.horizontal_stride;
     if (static_cast<int>(mode_setting.horizontal_active * sizeof(Gfx::ARGB32)) != mode_setting.horizontal_stride)
-        return Error::from_string_literal("Unsupported pitch"sv);
+        return Error::from_string_literal("Unsupported pitch");
 
     m_width = mode_setting.horizontal_active;
     return {};

+ 1 - 1
Userland/Utilities/du.cpp

@@ -128,7 +128,7 @@ ErrorOr<off_t> print_space_usage(String const& path, DuOption const& du_option,
         auto di = Core::DirIterator(path, Core::DirIterator::SkipParentAndBaseDir);
         if (di.has_error()) {
             outln("du: cannot read directory '{}': {}", path, di.error_string());
-            return Error::from_string_literal("An error occurred. See previous error."sv);
+            return Error::from_string_literal("An error occurred. See previous error.");
         }
 
         while (di.has_next()) {

+ 1 - 1
Userland/Utilities/matroska.cpp

@@ -11,7 +11,7 @@ ErrorOr<int> serenity_main(Main::Arguments)
 {
     auto document = Video::MatroskaReader::parse_matroska_from_file("/home/anon/Videos/test-webm.webm");
     if (!document) {
-        return Error::from_string_literal("Failed to parse :("sv);
+        return Error::from_string_literal("Failed to parse :(");
     }
 
     outln("DocType is {}", document->header().doc_type.characters());

+ 1 - 1
Userland/Utilities/pls.cpp

@@ -36,7 +36,7 @@ ErrorOr<int> serenity_main(Main::Arguments arguments)
         if (account.has_password()) {
             auto password = TRY(Core::get_password());
             if (!account.authenticate(password))
-                return Error::from_string_literal("Incorrect or disabled password."sv);
+                return Error::from_string_literal("Incorrect or disabled password.");
         }
     }
 

+ 1 - 1
Userland/Utilities/strace.cpp

@@ -848,7 +848,7 @@ ErrorOr<int> serenity_main(Main::Arguments arguments)
     int status;
     if (g_pid == -1) {
         if (child_argv.is_empty())
-            return Error::from_string_literal("Expected either a pid or some arguments"sv);
+            return Error::from_string_literal("Expected either a pid or some arguments");
 
         auto pid = TRY(Core::System::fork());