Browse Source

Fix of compilation on OSX and Linux. By the standard, a temporary
value cannot be passed to a reference.

bubnikv 7 years ago
parent
commit
9d98a27b98
2 changed files with 7 additions and 9 deletions
  1. 1 1
      xs/src/libslic3r/GCodeReader.hpp
  2. 6 8
      xs/src/libslic3r/GCodeTimeEstimator.cpp

+ 1 - 1
xs/src/libslic3r/GCodeReader.hpp

@@ -84,7 +84,7 @@ public:
         return end;
     }
     template<typename Callback>
-    void parse_line(const std::string &line, Callback &callback)
+    void parse_line(const std::string &line, Callback callback)
         { GCodeLine gline; this->parse_line(line.c_str(), gline, callback); }
     void parse_file(const std::string &file, callback_t callback);
 

+ 6 - 8
xs/src/libslic3r/GCodeTimeEstimator.cpp

@@ -156,12 +156,10 @@ namespace Slic3r {
 
   void GCodeTimeEstimator::calculate_time_from_lines(const std::vector<std::string>& gcode_lines)
   {
+    auto action = [this](GCodeReader &reader, const GCodeReader::GCodeLine &line)
+                    { this->_process_gcode_line(reader, line); };
     for (const std::string& line : gcode_lines)
-    {
-      _parser.parse_line(line, 
-        [this](GCodeReader &reader, const GCodeReader::GCodeLine &line)
-          { this->_process_gcode_line(reader, line); });
-    }
+      _parser.parse_line(line, action);
     _calculate_time();
     reset();
   }
@@ -178,11 +176,11 @@ namespace Slic3r {
   {
     PROFILE_FUNC();
     GCodeReader::GCodeLine gline;
+    auto action = [this](GCodeReader &reader, const GCodeReader::GCodeLine &line)
+      { this->_process_gcode_line(reader, line); };
     for (; *ptr != 0;) {
       gline.reset();
-      ptr = _parser.parse_line(ptr, gline, 
-        [this](GCodeReader &reader, const GCodeReader::GCodeLine &line)
-          { this->_process_gcode_line(reader, line); });
+      ptr = _parser.parse_line(ptr, gline, action);
     }
   }