do not segfault if error is not set by libgit2

This commit is contained in:
Nico von Geyso
2012-05-30 07:27:47 +02:00
parent e7b5560590
commit 480a56adcf

View File

@@ -33,6 +33,7 @@ PyObject * Error_type(int type)
// Critical // Critical
const git_error* error = giterr_last(); const git_error* error = giterr_last();
if(error != NULL) {
switch (error->klass) { switch (error->klass) {
case GITERR_NOMEMORY: case GITERR_NOMEMORY:
return PyExc_MemoryError; return PyExc_MemoryError;
@@ -40,9 +41,9 @@ PyObject * Error_type(int type)
return PyExc_OSError; return PyExc_OSError;
case GITERR_INVALID: case GITERR_INVALID:
return PyExc_ValueError; return PyExc_ValueError;
default:
return GitError;
} }
}
return GitError;
} }
@@ -54,7 +55,10 @@ PyObject* Error_set(int err)
PyErr_SetNone(Error_type(err)); PyErr_SetNone(Error_type(err));
} else { //critical failure } else { //critical failure
const git_error* error = giterr_last(); 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; return NULL;