From 8dc1d70d854a83c473222882e217392d314b264b Mon Sep 17 00:00:00 2001 From: Filip Sykala - NTB T15p Date: Tue, 30 Jan 2024 11:22:00 +0100 Subject: [PATCH] Fix SPE-2129 https://github.com/prusa3d/PrusaSlicer/issues/12157 (cherry picked from commit 309ec8c5fbcc0754f165b51e39e7c291da13ab77) --- src/libslic3r/Format/objparser.cpp | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/libslic3r/Format/objparser.cpp b/src/libslic3r/Format/objparser.cpp index 2b80a26721..3fbd3102ec 100644 --- a/src/libslic3r/Format/objparser.cpp +++ b/src/libslic3r/Format/objparser.cpp @@ -352,10 +352,18 @@ bool objparse(const char *path, ObjData &data) return false; try { - char buf[65536 * 2]; + char buf[(65536+1) * 2]; size_t len = 0; size_t lenPrev = 0; while ((len = ::fread(buf + lenPrev, 1, 65536, pFile)) != 0) { + if (std::feof(pFile)) { + // Fix issue with missing last trinagle in obj file: + // https://github.com/prusa3d/PrusaSlicer/issues/12157 + // algorithm expect line endings after last face + // but file format support it + buf[len] = '\n'; + ++len; + } len += lenPrev; size_t lastLine = 0; for (size_t i = 0; i < len; ++ i)