From fcd133eb328785662dc2037a10650dd838792d60 Mon Sep 17 00:00:00 2001 From: Sims <38142618+suchmememanyskill@users.noreply.github.com> Date: Wed, 11 Dec 2024 08:00:45 +0100 Subject: [PATCH] Better split impl --- .../octoprint/octoprint_printer_integration.cpp | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/CYD-Klipper/src/core/octoprint/octoprint_printer_integration.cpp b/CYD-Klipper/src/core/octoprint/octoprint_printer_integration.cpp index 99f8881..72846bb 100644 --- a/CYD-Klipper/src/core/octoprint/octoprint_printer_integration.cpp +++ b/CYD-Klipper/src/core/octoprint/octoprint_printer_integration.cpp @@ -59,7 +59,6 @@ bool OctoPrinter::post_request(const char* endpoint, const char* body, int timeo return result >= 200 && result < 300; } -// TODO: Make array in the first place, don't split on \n bool OctoPrinter::send_gcode(const char* gcode, bool wait) { JsonDocument doc; @@ -73,16 +72,15 @@ bool OctoPrinter::send_gcode(const char* gcode, bool wait) { const char *prev_char = iter - 1; - if (iter == last_line_start) + if (iter != last_line_start) { - continue; + char* buff = (char*)malloc(sizeof(char) * ((prev_char - last_line_start) + 1)); + buff[prev_char - last_line_start] = '\0'; + memcpy(buff, last_line_start, prev_char - last_line_start); + array.add(buff); } - char* buff = (char*)malloc(sizeof(char) * (prev_char - gcode) + 1); - buff[prev_char - gcode] = '\0'; - memcpy(buff, last_line_start, prev_char - gcode); last_line_start = iter + 1; - array.add(last_line_start); } if (*iter == '\0') @@ -96,6 +94,11 @@ bool OctoPrinter::send_gcode(const char* gcode, bool wait) return false; } + for (char* alloc : array) + { + free(alloc); + } + return post_request("/api/printer/command/custom", out_buff); }