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
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;