diff options
author | Haoyu Qiu <timothyqiu32@gmail.com> | 2024-04-12 18:01:58 +0800 |
---|---|---|
committer | Haoyu Qiu <timothyqiu32@gmail.com> | 2024-04-12 18:01:58 +0800 |
commit | 66a3a944e24e341658b5a48920ec8c0e9c31e5c5 (patch) | |
tree | 0fec28faa8c701ff5c71169964b26dce79fd8166 | |
parent | 30e71782afd9a1fd35707b89511bcd1aa538f673 (diff) | |
download | redot-engine-66a3a944e24e341658b5a48920ec8c0e9c31e5c5.tar.gz |
Fix error when loading SVG imported as Image
-rw-r--r-- | modules/svg/image_loader_svg.cpp | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/modules/svg/image_loader_svg.cpp b/modules/svg/image_loader_svg.cpp index affe163aeb..d903137195 100644 --- a/modules/svg/image_loader_svg.cpp +++ b/modules/svg/image_loader_svg.cpp @@ -173,9 +173,17 @@ void ImageLoaderSVG::get_recognized_extensions(List<String> *p_extensions) const } Error ImageLoaderSVG::load_image(Ref<Image> p_image, Ref<FileAccess> p_fileaccess, BitField<ImageFormatLoader::LoaderFlags> p_flags, float p_scale) { - String svg = p_fileaccess->get_as_utf8_string(); + const uint64_t len = p_fileaccess->get_length() - p_fileaccess->get_position(); + Vector<uint8_t> buffer; + buffer.resize(len); + p_fileaccess->get_buffer(buffer.ptrw(), buffer.size()); + + String svg; + Error err = svg.parse_utf8((const char *)buffer.ptr(), buffer.size()); + if (err != OK) { + return err; + } - Error err; if (p_flags & FLAG_CONVERT_COLORS) { err = create_image_from_string(p_image, svg, p_scale, false, forced_color_map); } else { |