diff --git a/Marlin/src/gcode/queue.cpp b/Marlin/src/gcode/queue.cpp
index d519378a2969274b72e78a1ba9069ede95164eb8..08cc26eb946f415bcfa2925d9e1647838c356707 100644
--- a/Marlin/src/gcode/queue.cpp
+++ b/Marlin/src/gcode/queue.cpp
@@ -170,16 +170,19 @@ bool GCodeQueue::process_injected_command() {
char c;
size_t i = 0;
while ((c = pgm_read_byte(&injected_commands_P[i])) && c != '\n') i++;
- if (i) {
- char cmd[i + 1];
- memcpy_P(cmd, injected_commands_P, i);
- cmd[i] = '\0';
+ // Extract current command and move pointer to next command
+ char cmd[i + 1];
+ memcpy_P(cmd, injected_commands_P, i);
+ cmd[i] = '\0';
+ injected_commands_P = c ? injected_commands_P + i + 1 : nullptr;
+
+ // Execute command if non-blank
+ if (i) {
parser.parse(cmd);
PORT_REDIRECT(SERIAL_PORT);
gcode.process_parsed_command();
}
- injected_commands_P = c ? injected_commands_P + i + 1 : nullptr;
return true;
}