]> git.saurik.com Git - apt.git/blobdiff - apt-pkg/contrib/error.h
The entire concept of PendingError() is flawed :/.
[apt.git] / apt-pkg / contrib / error.h
index e56999b141ed269cf43c5ff9ba874985e0e67574..bcaa7c99592fe7545c60be39f0be51449a7a7639 100644 (file)
@@ -227,6 +227,26 @@ public:                                                                    /*{{{*/
         */
        inline bool PendingError() const APT_PURE {return PendingFlag;};
 
+       /** \brief convert a stored error to a return code
+        *
+        *  Put simply, the entire concept of PendingError() is flawed :/.
+         *
+         *  The typical "if (PendingError()) return false;" check that is
+         *  strewn throughout the codebase "compounds", making it impossible
+         *  for there to be any nuance about the notion of "error" when a
+         *  subsystem needs to fail but a higher-level system needs to work.
+         *
+         *  However, the codebase is also horribly broken with respect to
+         *  errors, as it fails to use C++ exceptions when warranted and
+         *  instead relies on this insane indirect error mechanism to check
+         *  the failure status of a constructor. What is thereby needed is
+         *  a way to clear the PendingError() flag without also discarding
+         *  the underlying errors, so we have to convert them to warnings.
+         *
+        *  \return \b false
+        */
+       bool ReturnError() APT_COLD;
+
        /** \brief is the list empty?
         *
         *  Can be used to check if the current stack level doesn't include