summaryrefslogtreecommitdiff
path: root/python/cache.cc
diff options
context:
space:
mode:
Diffstat (limited to 'python/cache.cc')
-rw-r--r--python/cache.cc17
1 files changed, 14 insertions, 3 deletions
diff --git a/python/cache.cc b/python/cache.cc
index bd280dec..523444b5 100644
--- a/python/cache.cc
+++ b/python/cache.cc
@@ -936,14 +936,25 @@ PyObject *TmpGetCache(PyObject *Self,PyObject *Args)
pkgCacheFile *Cache = new pkgCacheFile();
if(pyCallbackInst != 0) {
+ if (PyObject_HasAttrString(pyCallbackInst, "done") != 1) {
+ PyErr_SetString(PyExc_ValueError,
+ "progress object must implement done()");
+ return 0;
+ }
+ if (PyObject_HasAttrString(pyCallbackInst, "update") != 1) {
+ PyErr_SetString(PyExc_ValueError,
+ "progress object must implement update()");
+ return 0;
+ }
PyOpProgress progress;
progress.setCallbackInst(pyCallbackInst);
if (Cache->Open(progress,false) == false)
- return HandleErrors();
- } else {
+ return HandleErrors();
+ }
+ else {
OpTextProgress Prog;
if (Cache->Open(Prog,false) == false)
- return HandleErrors();
+ return HandleErrors();
}
CppOwnedPyObject<pkgCacheFile*> *CacheFileObj =