diff --git a/src/io.cpp b/src/io.cpp index 94c84dd9..b1934d87 100644 --- a/src/io.cpp +++ b/src/io.cpp @@ -466,6 +466,9 @@ namespace Mist { trackState[tid] = FILL_NEW; return; } + #if defined(__CYGWIN__) || defined(_WIN32) + static std::map preservedTempMetas; + #endif switch (trackState[tid]) { case FILL_NEW: { unsigned long newTid = ((long)(tmp[offset]) << 24) | ((long)(tmp[offset + 1]) << 16) | ((long)(tmp[offset + 2]) << 8) | tmp[offset + 3]; @@ -488,6 +491,10 @@ namespace Mist { memcpy(metaPages[tid].mapped, tmpStr.data(), tmpStr.size()); INFO_MSG("Temporary metadata written for incoming track %lu, handling as track %lu", tid, newTid); //Not actually removing the page, because we set master to false + #if defined(__CYGWIN__) || defined(_WIN32) + IPC::preservePage(pageName); + preservedTempMetas[tid] = pageName; + #endif metaPages.erase(tid); trackState[tid] = FILL_NEG; trackMap[tid] = newTid; @@ -500,6 +507,10 @@ namespace Mist { INFO_MSG("Negotiating, but firstPage not yet set, waiting for buffer"); break; } + #if defined(__CYGWIN__) || defined(_WIN32) + IPC::releasePage(preservedTempMetas[tid]); + preservedTempMetas.erase(tid); + #endif if (finalTid == 0xFFFFFFFF) { WARN_MSG("Buffer has declined incoming track %lu", tid); memset(tmp + offset, 0, 6);