diff --git a/common/rclconfig.cpp b/common/rclconfig.cpp
index 1d5afba5d..dbbdcb256 100644
--- a/common/rclconfig.cpp
+++ b/common/rclconfig.cpp
@@ -1689,13 +1689,20 @@ bool RclConfig::processFilterCmd(std::vector<std::string>& cmd) const
     bool hasinterp = !stringlowercmp("python", *it) ||
         !stringlowercmp("perl", *it);
 
-    *it++ = findFilter(*it);
+    // Note that, if the cmd vector size is 1, post-incrementing the
+    // iterator in the following statement, which works on x86, leads
+    // to a crash on ARM with gcc 6 and 8 (at least), which does not
+    // seem right (it should just become cmd.end() ?) but
+    // whatever... We do it later then.
+    *it = findFilter(*it);
+
     if (hasinterp) {
         if (cmd.size() < 2) {
             LOGERR("processFilterCmd: python/perl cmd: no script?. [" <<
                    stringsToString(cmd) << "]\n");
             return false;
         } else {
+            ++it;
             *it = findFilter(*it);
         }
     }
