do not segfault if error is not set by libgit2
This commit is contained in:
@@ -33,6 +33,7 @@ PyObject * Error_type(int type)
|
||||
|
||||
// Critical
|
||||
const git_error* error = giterr_last();
|
||||
if(error != NULL) {
|
||||
switch (error->klass) {
|
||||
case GITERR_NOMEMORY:
|
||||
return PyExc_MemoryError;
|
||||
@@ -40,9 +41,9 @@ PyObject * Error_type(int type)
|
||||
return PyExc_OSError;
|
||||
case GITERR_INVALID:
|
||||
return PyExc_ValueError;
|
||||
default:
|
||||
return GitError;
|
||||
}
|
||||
}
|
||||
return GitError;
|
||||
}
|
||||
|
||||
|
||||
@@ -54,7 +55,10 @@ PyObject* Error_set(int err)
|
||||
PyErr_SetNone(Error_type(err));
|
||||
} else { //critical failure
|
||||
const git_error* error = giterr_last();
|
||||
PyErr_SetString(Error_type(err), error->message);
|
||||
char* message = (error == NULL) ?
|
||||
"(No error information given)" : error->message;
|
||||
|
||||
PyErr_SetString(Error_type(err), message);
|
||||
}
|
||||
|
||||
return NULL;
|
||||
|
||||
Reference in New Issue
Block a user