diff --git a/src/libslic3r/GCode.cpp b/src/libslic3r/GCode.cpp
index cd0f8142d..37a14d42c 100644
--- a/src/libslic3r/GCode.cpp
+++ b/src/libslic3r/GCode.cpp
@@ -2811,17 +2811,16 @@ std::string GCode::set_extruder(unsigned int extruder_id, double print_z)
         gcode += m_ooze_prevention.pre_toolchange(*this);
 
     const std::string& toolchange_gcode = m_config.toolchange_gcode.value;
-    if (m_writer.extruder() != nullptr) {
-        // Process the custom toolchange_gcode. If it is empty, insert just a Tn command.
-        if (!toolchange_gcode.empty()) {
-            DynamicConfig config;
-            config.set_key_value("previous_extruder", new ConfigOptionInt((int)m_writer.extruder()->id()));
-            config.set_key_value("next_extruder",     new ConfigOptionInt((int)extruder_id));
-            config.set_key_value("layer_num",         new ConfigOptionInt(m_layer_index));
-            config.set_key_value("layer_z",           new ConfigOptionFloat(print_z));
-            gcode += placeholder_parser_process("toolchange_gcode", toolchange_gcode, extruder_id, &config);
-            check_add_eol(gcode);
-        }
+
+    // Process the custom toolchange_gcode. If it is empty, insert just a Tn command.
+    if (!toolchange_gcode.empty()) {
+        DynamicConfig config;
+        config.set_key_value("previous_extruder", new ConfigOptionInt((int)(m_writer.extruder() != nullptr ? m_writer.extruder()->id() : -1 )));
+        config.set_key_value("next_extruder",     new ConfigOptionInt((int)extruder_id));
+        config.set_key_value("layer_num",         new ConfigOptionInt(m_layer_index));
+        config.set_key_value("layer_z",           new ConfigOptionFloat(print_z));
+        gcode += placeholder_parser_process("toolchange_gcode", toolchange_gcode, extruder_id, &config);
+        check_add_eol(gcode);
     }
 
     // We inform the writer about what is happening, but we may not use the resulting gcode.
diff --git a/t/multi.t b/t/multi.t
index 75ce0c286..8e7225bec 100644
--- a/t/multi.t
+++ b/t/multi.t
@@ -25,7 +25,9 @@ use Slic3r::Test;
     $config->set('extruder_offset', [ [0,0], [20,0], [0,20], [20,20] ]);
     $config->set('temperature', [200, 180, 170, 160]);
     $config->set('first_layer_temperature', [206, 186, 166, 156]);
-    $config->set('toolchange_gcode', ';toolchange');  # test that it doesn't crash when this is supplied
+    $config->set('toolchange_gcode', 'T[next_extruder] ;toolchange');  # test that it doesn't crash when this is supplied
+    # Since July 2019, PrusaSlicer only emits automatic Tn command in case that the toolchange_gcode is empty
+    # The "T[next_extruder]" is therefore needed in this test.
     
     my $print = Slic3r::Test::init_print('20mm_cube', config => $config);