Skip to content

Commit bf61e52

Browse files
committed
⚡️ Tiny string optimization
1 parent 2d9262c commit bf61e52

File tree

2 files changed

+16
-8
lines changed

2 files changed

+16
-8
lines changed

Marlin/src/core/serial.h

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -276,13 +276,13 @@ class SString : public MString<SIZE> {
276276
SString& set() { super::set(); return *this; }
277277

278278
template<typename... Args>
279-
SString& setf_P(PGM_P const fmt, Args... more) { snprintf_P(str, SIZE, fmt, more...); debug(F("setf_P")); return *this; }
279+
SString& setf_P(PGM_P const fmt, Args... more) { super::setf_P(fmt, more...); return *this; }
280280

281281
template<typename... Args>
282-
SString& setf(const char *fmt, Args... more) { snprintf(str, SIZE, fmt, more...); debug(F("setf")); return *this; }
282+
SString& setf(const char *fmt, Args... more) { super::setf(fmt, more...); return *this; }
283283

284284
template<typename... Args>
285-
SString& setf(FSTR_P const fmt, Args... more) { return setf_P(FTOP(fmt), more...); }
285+
SString& setf(FSTR_P const fmt, Args... more) { super::setf(fmt, more...); return *this; }
286286

287287
template <typename T>
288288
SString& set(const T &v) { super::set(v); return *this; }

Marlin/src/lcd/menu/menu_ubl.cpp

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -376,11 +376,19 @@ void _lcd_ubl_storage_mesh() {
376376
* UBL LCD "radar" map point editing
377377
*/
378378
void _lcd_ubl_map_edit_cmd() {
379-
char ubl_lcd_gcode[50], str[10], str2[10];
380-
dtostrf(bedlevel.get_mesh_x(x_plot), 0, 2, str);
381-
dtostrf(bedlevel.get_mesh_y(y_plot), 0, 2, str2);
382-
snprintf_P(ubl_lcd_gcode, sizeof(ubl_lcd_gcode), PSTR("G29P4X%sY%sR%i"), str, str2, int(n_edit_pts));
383-
queue.inject(ubl_lcd_gcode);
379+
#if ENABLED(POWER_LOSS_RECOVERY)
380+
// Costs 198 bytes on AVR with PLR disabled, but saves 60 bytes with PLR enabled
381+
queue.inject(TS(F("G29P4X"), x_plot, 'Y', y_plot, 'R', n_edit_pts));
382+
#else
383+
char ubl_lcd_gcode[50], str1[10], str2[10];
384+
snprintf_P(ubl_lcd_gcode, sizeof(ubl_lcd_gcode),
385+
PSTR("G29P4X%sY%sR%i"),
386+
dtostrf(bedlevel.get_mesh_x(x_plot), 0, 2, str1),
387+
dtostrf(bedlevel.get_mesh_y(y_plot), 0, 2, str2),
388+
int(n_edit_pts)
389+
);
390+
queue.inject(ubl_lcd_gcode);
391+
#endif
384392
}
385393

386394
/**

0 commit comments

Comments
 (0)