From 2b54eeb89717111f55510e17d7b6c5bc1b7c44b8 Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Mon, 24 Nov 2014 20:26:27 -0800 Subject: [PATCH] Expand on More RAM concept, address minor bugs --- Marlin/cardreader.cpp | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/Marlin/cardreader.cpp b/Marlin/cardreader.cpp index 862ed38475..10a4e6b1cf 100644 --- a/Marlin/cardreader.cpp +++ b/Marlin/cardreader.cpp @@ -11,7 +11,7 @@ CardReader::CardReader() { - #if SORT_USES_MORE_RAM + #if defined(SDCARD_SORT_ALPHA) && SORT_USES_MORE_RAM sortnames = NULL; sort_count = 0; #endif @@ -558,6 +558,13 @@ void CardReader::closefile(bool store_location) void CardReader::getfilename(const uint8_t nr) { + #if defined(SDCARD_SORT_ALPHA) && SORT_USES_MORE_RAM + if (nr < sort_count) { + strcpy(diveFilename, sortnames[nr]); + return; + } + #endif + curDir=&workDir; lsAction=LS_GetFilename; nrFiles=nr; @@ -642,9 +649,7 @@ void CardReader::getfilename_sorted(const uint8_t nr) { */ void CardReader::presort() { - #if SORT_USES_MORE_RAM - flush_presort(); - #endif + flush_presort(); uint16_t fileCnt = getnrfilenames(); if (fileCnt > 0) { @@ -652,7 +657,7 @@ void CardReader::presort() if (fileCnt > SORT_LIMIT) fileCnt = SORT_LIMIT; #if SORT_USES_MORE_RAM - sortnames = malloc(fileCnt * sizeof(char*)); + sortnames = (char**)malloc(fileCnt * sizeof(char*)); sort_count = fileCnt; #elif SORT_USES_RAM char *sortnames[fileCnt]; @@ -748,7 +753,7 @@ void CardReader::flush_presort() { #endif } -#endif +#endif // SDCARD_SORT_ALPHA void CardReader::printingHasFinished() {