Browse Source

Fix for orbital bug: using delete for memory created by minz.

tamasmeszaros 6 years ago
parent
commit
27b7e7c6a9
2 changed files with 13 additions and 2 deletions
  1. 5 0
      src/libslic3r/Rasterizer/Rasterizer.cpp
  2. 8 2
      src/libslic3r/Rasterizer/Rasterizer.hpp

+ 5 - 0
src/libslic3r/Rasterizer/Rasterizer.cpp

@@ -246,4 +246,9 @@ RawBytes Raster::save(Raster::Compression comp)
     return std::move(ret);
 }
 
+void RawBytes::MinzDeleter::operator()(uint8_t *rawptr)
+{
+    MZ_FREE(rawptr);
+}
+
 }

+ 8 - 2
src/libslic3r/Rasterizer/Rasterizer.hpp

@@ -11,8 +11,14 @@ namespace Slic3r {
 class ExPolygon;
 
 // Raw byte buffer paired with its size. Suitable for compressed PNG data.
-struct RawBytes {
-    std::unique_ptr<std::uint8_t> buffer = nullptr;
+class RawBytes {
+    class MinzDeleter {
+    public:
+        void operator()(std::uint8_t *rawptr);
+    };
+public:
+
+    std::unique_ptr<std::uint8_t, MinzDeleter> buffer = nullptr;
     size_t size = 0;
 
     // FIXME: the following is needed for MSVC2013 compatibility