From 73dc4a0feb1e8d07301221f3a530f5650a1006fe Mon Sep 17 00:00:00 2001 From: Jonas 'Sortie' Termansen Date: Tue, 23 Sep 2014 22:55:13 +0200 Subject: [PATCH] Fix kernel leaking ESPIPE in non-error cases. --- kernel/descriptor.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/kernel/descriptor.cpp b/kernel/descriptor.cpp index fd5a202a..c1b2958e 100644 --- a/kernel/descriptor.cpp +++ b/kernel/descriptor.cpp @@ -149,9 +149,11 @@ bool Descriptor::IsSeekable() if ( !checked_seekable ) { // TODO: Is this enough? Check that errno happens to be ESPIPE? + int saved_errno = errno; ioctx_t ctx; SetupKernelIOCtx(&ctx); seekable = 0 <= vnode->lseek(&ctx, SEEK_SET, 0) || S_ISDIR(vnode->type); checked_seekable = true; + errno = saved_errno; } return seekable; }