225e78ff3e56fece2df5cdbc1d6da5d444347ffe angie Thu Apr 25 12:23:34 2019 -0700 Fixing loss of track collections caused by loss of newlines in hub file due to using lineFileNextReal instead of lineFileNext. refs #22440 note-43 Thx BrianL! diff --git src/hg/hgSession/sessionData.c src/hg/hgSession/sessionData.c index ae417ab..9a31fff 100644 --- src/hg/hgSession/sessionData.c +++ src/hg/hgSession/sessionData.c @@ -341,38 +341,44 @@ char *newFile = NULL; if (fileExists(oldFile)) { if (isTrashPath(oldFile) && !maybeReadlink(oldFile)) { struct lineFile *lf = lineFileOpen(oldFile, TRUE); if (isNotEmpty(sessionDir)) newFile = sessionDataPathFromTrash(oldFile, sessionDir); else newFile = newCtTrashFile(); if (fileExists(newFile)) errAbort("saveTrackFile: new file '%s' already exists", newFile); makeDirsForFile(newFile); FILE *newF = mustOpen(newFile, "w"); char *line; - while (lineFileNextReal(lf, &line)) + while (lineFileNext(lf, &line, NULL)) + { + char *s = skipLeadingSpaces(line); + if (*s != '\0' && *s != '#') { char *trackLine = cloneString(line); saveTrashPaths(&trackLine, sessionDir, FALSE); saveDbTableName(&trackLine, sessionDataDbPrefix, sessionDir); fprintf(newF, "%s\n", trackLine); freeMem(trackLine); } + else + fprintf(newF, "%s\n", line); + } carefulClose(&newF); if (isNotEmpty(sessionDir)) { if (unlink(oldFile) != 0) errnoAbort("saveTrackFile: unlink(oldFile='%s') failed", oldFile); if (symlink(newFile, oldFile) != 0) errnoAbort("saveTrackFile: symlink(newFile='%s', oldFile='%s') failed", newFile, oldFile); } cartSetString(cart, varName, newFile); } } else cartRemove(cart, varName); return newFile;