From 62c9fe4273e8f2a0f3f0f4c86de3a90668532354 Mon Sep 17 00:00:00 2001 From: Lawrence D'Anna Date: Mon, 14 Oct 2019 20:15:34 +0000 Subject: uint32_t options -> File::OpenOptions options Summary: This patch re-types everywhere that passes a File::OpenOptions as a uint32_t so it actually uses File::OpenOptions. It also converts some OpenOptions related functions that fail by returning 0 or NULL into llvm::Expected split off from https://reviews.llvm.org/D68737 Reviewers: JDevlieghere, jasonmolenda, labath Reviewed By: labath Subscribers: lldb-commits Tags: #lldb Differential Revision: https://reviews.llvm.org/D68853 llvm-svn: 374817 --- .../ScriptInterpreter/Python/PythonDataObjects.cpp | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) (limited to 'lldb/source/Plugins/ScriptInterpreter/Python/PythonDataObjects.cpp') diff --git a/lldb/source/Plugins/ScriptInterpreter/Python/PythonDataObjects.cpp b/lldb/source/Plugins/ScriptInterpreter/Python/PythonDataObjects.cpp index 5346e3f5914..c3588f6ec33 100644 --- a/lldb/source/Plugins/ScriptInterpreter/Python/PythonDataObjects.cpp +++ b/lldb/source/Plugins/ScriptInterpreter/Python/PythonDataObjects.cpp @@ -1090,8 +1090,12 @@ FileUP PythonFile::GetUnderlyingFile() const { // File object knows about that. PythonString py_mode = GetAttributeValue("mode").AsType(); auto options = File::GetOptionsFromMode(py_mode.GetString()); - auto file = std::unique_ptr( - new NativeFile(PyObject_AsFileDescriptor(m_py_obj), options, false)); + if (!options) { + llvm::consumeError(options.takeError()); + return nullptr; + } + auto file = std::unique_ptr(new NativeFile( + PyObject_AsFileDescriptor(m_py_obj), options.get(), false)); if (!file->IsValid()) return nullptr; return file; @@ -1165,9 +1169,10 @@ std::error_code PythonException::convertToErrorCode() const { char PythonException::ID = 0; -llvm::Expected GetOptionsForPyObject(const PythonObject &obj) { - uint32_t options = 0; +llvm::Expected +GetOptionsForPyObject(const PythonObject &obj) { #if PY_MAJOR_VERSION >= 3 + auto options = File::OpenOptions(0); auto readable = As(obj.CallMethod("readable")); if (!readable) return readable.takeError(); @@ -1178,11 +1183,11 @@ llvm::Expected GetOptionsForPyObject(const PythonObject &obj) { options |= File::eOpenOptionRead; if (writable.get()) options |= File::eOpenOptionWrite; + return options; #else PythonString py_mode = obj.GetAttributeValue("mode").AsType(); - options = File::GetOptionsFromMode(py_mode.GetString()); + return File::GetOptionsFromMode(py_mode.GetString()); #endif - return options; } // Base class template for python files. All it knows how to do @@ -1245,7 +1250,7 @@ namespace { class SimplePythonFile : public OwnedPythonFile { public: SimplePythonFile(const PythonFile &file, bool borrowed, int fd, - uint32_t options) + File::OpenOptions options) : OwnedPythonFile(file, borrowed, fd, options, false) {} }; } // namespace -- cgit v1.2.3