From: xie xingguo Date: Thu, 14 Jul 2016 10:48:20 +0000 (+0800) Subject: kv/MemDB: fix fd leak X-Git-Tag: ses5-milestone5~361^2~3 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=b150081d04b1fc2c4f44cc4a1f252ac1272b2274;p=ceph.git kv/MemDB: fix fd leak Also translate the error message to the output properly. Signed-off-by: xie xingguo --- diff --git a/src/kv/MemDB.cc b/src/kv/MemDB.cc index ce6c5ef952c..5135e6d1e29 100644 --- a/src/kv/MemDB.cc +++ b/src/kv/MemDB.cc @@ -94,16 +94,21 @@ void MemDB::_load() */ int fd = TEMP_FAILURE_RETRY(::open(_get_data_fn().c_str(), O_RDONLY)); if (fd < 0) { + int err = errno; std::ostringstream oss; - oss << "can't open " << _get_data_fn().c_str() << ": " << std::endl; + oss << "can't open " << _get_data_fn().c_str() << ": " + << cpp_strerror(err) << std::endl; return; } struct stat st; memset(&st, 0, sizeof(st)); if (::fstat(fd, &st) < 0) { + int err = errno; std::ostringstream oss; - oss << "can't stat file " << _get_data_fn().c_str() << ": " << std::endl; + oss << "can't stat file " << _get_data_fn().c_str() << ": " + << cpp_strerror(err) << std::endl; + VOID_TEMP_FAILURE_RETRY(::close(fd)); return; }