diff --git a/Userland/Libraries/LibGfx/ICC/Profile.cpp b/Userland/Libraries/LibGfx/ICC/Profile.cpp index bff08ccce6..0b06e06a09 100644 --- a/Userland/Libraries/LibGfx/ICC/Profile.cpp +++ b/Userland/Libraries/LibGfx/ICC/Profile.cpp @@ -1377,10 +1377,11 @@ ErrorOr Profile::check_tag_types() ErrorOr> Profile::try_load_from_externally_owned_memory(ReadonlyBytes bytes) { - auto profile = TRY(try_make_ref_counted()); - profile->m_header = TRY(read_header(bytes)); - bytes = bytes.trim(profile->on_disk_size()); - profile->m_tag_table = TRY(read_tag_table(bytes)); + auto header = TRY(read_header(bytes)); + bytes = bytes.trim(header.on_disk_size); + auto tag_table = TRY(read_tag_table(bytes)); + + auto profile = TRY(try_make_ref_counted(header, move(tag_table))); TRY(profile->check_required_tags()); TRY(profile->check_tag_types()); diff --git a/Userland/Libraries/LibGfx/ICC/Profile.h b/Userland/Libraries/LibGfx/ICC/Profile.h index ac081abd68..7767512dd9 100644 --- a/Userland/Libraries/LibGfx/ICC/Profile.h +++ b/Userland/Libraries/LibGfx/ICC/Profile.h @@ -210,6 +210,12 @@ class Profile : public RefCounted { public: static ErrorOr> try_load_from_externally_owned_memory(ReadonlyBytes); + Profile(ProfileHeader const& header, OrderedHashMap> tag_table) + : m_header(header) + , m_tag_table(move(tag_table)) + { + } + Optional preferred_cmm_type() const { return m_header.preferred_cmm_type; } Version version() const { return m_header.version; } DeviceClass device_class() const { return m_header.device_class; }