summaryrefslogtreecommitdiff
path: root/lang/cpp/src/editinteractor.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'lang/cpp/src/editinteractor.cpp')
-rw-r--r--lang/cpp/src/editinteractor.cpp11
1 files changed, 10 insertions, 1 deletions
diff --git a/lang/cpp/src/editinteractor.cpp b/lang/cpp/src/editinteractor.cpp
index 08cb1bc..373a446 100644
--- a/lang/cpp/src/editinteractor.cpp
+++ b/lang/cpp/src/editinteractor.cpp
@@ -96,7 +96,16 @@ public:
// advance to next state based on input:
const unsigned int oldState = ei->state;
- ei->state = ei->q->nextState(status, args, err);
+
+ if (ei->q->needsNoResponse(status)) {
+ // keep state
+ } else if (status == GPGME_STATUS_ERROR) {
+ err = ei->q->parseStatusError(args);
+ ei->state = EditInteractor::ErrorState;
+ } else {
+ ei->state = ei->q->nextState(status, args, err);
+ }
+
if (ei->debug) {
std::fprintf(ei->debug, "EditInteractor: %u -> nextState( %s, %s ) -> %u\n",
oldState, status_to_string(status), args ? args : "<null>", ei->state);