Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAras Pranckevicius <aras@nesnausk.org>2022-05-04 15:10:54 +0300
committerAras Pranckevicius <aras@nesnausk.org>2022-05-04 15:10:54 +0300
commitcbeb8770cc4daec5c81f8d8ce060a1b594c039bb (patch)
treee25bc52bb3636f8573e819712768a51dfdf24df2 /source/blender/io/wavefront_obj/importer/obj_import_file_reader.cc
parentb31f5b8ce7ae0f3f8195dc04a2006945fe6b4bff (diff)
Fix T97794: new OBJ importer does not handle quoted MTL paths
Fixes T97794 (which is a reintroduction of an older issue T67266 that has been fixed in the python importer, but the fix was not in the C++ one). Some software produces OBJ files with mtllib statements like mtllib "file name in quotes.mtl", and the new importer was not stripping the quotes away. While at it, I noticed that MTLParser constructor was taking a StringRef and treating it as a zero-terminated string, which is not necessarily the case. Fixed that by explicitly using a StringRefNull type. Reviewed By: Howard Trickey Differential Revision: https://developer.blender.org/D14838
Diffstat (limited to 'source/blender/io/wavefront_obj/importer/obj_import_file_reader.cc')
-rw-r--r--source/blender/io/wavefront_obj/importer/obj_import_file_reader.cc9
1 files changed, 7 insertions, 2 deletions
diff --git a/source/blender/io/wavefront_obj/importer/obj_import_file_reader.cc b/source/blender/io/wavefront_obj/importer/obj_import_file_reader.cc
index 8df2a6bf16a..f57828725a0 100644
--- a/source/blender/io/wavefront_obj/importer/obj_import_file_reader.cc
+++ b/source/blender/io/wavefront_obj/importer/obj_import_file_reader.cc
@@ -618,8 +618,13 @@ Span<std::string> OBJParser::mtl_libraries() const
return mtl_libraries_;
}
-void OBJParser::add_mtl_library(const std::string &path)
+void OBJParser::add_mtl_library(StringRef path)
{
+ /* Remove any quotes from start and end (T67266, T97794). */
+ if (path.size() > 2 && path.startswith("\"") && path.endswith("\"")) {
+ path = path.drop_prefix(1).drop_suffix(1);
+ }
+
if (!mtl_libraries_.contains(path)) {
mtl_libraries_.append(path);
}
@@ -642,7 +647,7 @@ void OBJParser::add_default_mtl_library()
}
}
-MTLParser::MTLParser(StringRef mtl_library, StringRefNull obj_filepath)
+MTLParser::MTLParser(StringRefNull mtl_library, StringRefNull obj_filepath)
{
char obj_file_dir[FILE_MAXDIR];
BLI_split_dir_part(obj_filepath.data(), obj_file_dir, FILE_MAXDIR);