The virGetLastError() function fetches the last reported error from a
thread local variable. Goroutines may be arbitrarily switched between OS
threads between the libvirt API call and the virGetLastError()
call. Thus this API is impossible to use safely and must be removed. All
the Go APIs return an error object directly so nothing should need the
GetLastError() binding anyway.

Signed-off-by: Daniel P. Berrangé <berra...@redhat.com>
---
 api_test.go |  1 +
 error.go    | 20 --------------------
 2 files changed, 1 insertion(+), 20 deletions(-)

diff --git a/api_test.go b/api_test.go
index a16a1eb..564bdd4 100644
--- a/api_test.go
+++ b/api_test.go
@@ -68,6 +68,7 @@ var (
                /* Only needed at C level */
                "virCopyLastError",
                "virFreeError",
+               "virGetLastError",
                "virGetLastErrorMessage",
                "virGetLastErrorCode",
                "virGetLastErrorDomain",
diff --git a/error.go b/error.go
index b8e2900..37fefc1 100644
--- a/error.go
+++ b/error.go
@@ -594,26 +594,6 @@ func makeError(err *C.virError) Error {
        return ret
 }
 
-func GetLastError() Error {
-       err := C.virGetLastError()
-       if err == nil {
-               return Error{
-                       Code:    ERR_OK,
-                       Domain:  FROM_NONE,
-                       Message: "Missing error",
-                       Level:   ERR_NONE,
-               }
-       }
-       virErr := Error{
-               Code:    ErrorNumber(err.code),
-               Domain:  ErrorDomain(err.domain),
-               Message: C.GoString(err.message),
-               Level:   ErrorLevel(err.level),
-       }
-       C.virResetError(err)
-       return virErr
-}
-
 func GetNotImplementedError(apiname string) Error {
        return Error{
                Code:    ERR_NO_SUPPORT,
-- 
2.17.1

--
libvir-list mailing list
libvir-list@redhat.com
https://www.redhat.com/mailman/listinfo/libvir-list

Reply via email to