forked from lix-project/lix
* In importPath() and exportPath(), lock the temporary directory to
prevent it from being deleted by the garbage collector.
This commit is contained in:
parent
f16fe2af8d
commit
b57189174f
|
@ -873,6 +873,8 @@ void LocalStore::exportPath(const Path & path, bool sign,
|
||||||
writeInt(1, hashAndWriteSink);
|
writeInt(1, hashAndWriteSink);
|
||||||
|
|
||||||
Path tmpDir = createTempDir();
|
Path tmpDir = createTempDir();
|
||||||
|
PathLocks tmpDirLock(singleton<PathSet, Path>(tmpDir));
|
||||||
|
tmpDirLock.setDeletion(true);
|
||||||
AutoDelete delTmp(tmpDir);
|
AutoDelete delTmp(tmpDir);
|
||||||
Path hashFile = tmpDir + "/hash";
|
Path hashFile = tmpDir + "/hash";
|
||||||
writeFile(hashFile, printHash(hash));
|
writeFile(hashFile, printHash(hash));
|
||||||
|
@ -922,6 +924,8 @@ Path LocalStore::importPath(bool requireSignature, Source & source)
|
||||||
store path follows the archive data proper), and besides, we
|
store path follows the archive data proper), and besides, we
|
||||||
don't know yet whether the signature is valid. */
|
don't know yet whether the signature is valid. */
|
||||||
Path tmpDir = createTempDir(nixStore);
|
Path tmpDir = createTempDir(nixStore);
|
||||||
|
PathLocks tmpDirLock(singleton<PathSet, Path>(tmpDir));
|
||||||
|
tmpDirLock.setDeletion(true);
|
||||||
AutoDelete delTmp(tmpDir); /* !!! could be GC'ed! */
|
AutoDelete delTmp(tmpDir); /* !!! could be GC'ed! */
|
||||||
Path unpacked = tmpDir + "/unpacked";
|
Path unpacked = tmpDir + "/unpacked";
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue