summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHaoyu Qiu <timothyqiu32@gmail.com>2024-04-12 18:01:58 +0800
committerHaoyu Qiu <timothyqiu32@gmail.com>2024-04-12 18:01:58 +0800
commit66a3a944e24e341658b5a48920ec8c0e9c31e5c5 (patch)
tree0fec28faa8c701ff5c71169964b26dce79fd8166
parent30e71782afd9a1fd35707b89511bcd1aa538f673 (diff)
downloadredot-engine-66a3a944e24e341658b5a48920ec8c0e9c31e5c5.tar.gz
Fix error when loading SVG imported as Image
-rw-r--r--modules/svg/image_loader_svg.cpp12
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 {