diff --git a/src/script/interpreter.cpp b/src/script/interpreter.cpp
--- a/src/script/interpreter.cpp
+++ b/src/script/interpreter.cpp
@@ -874,19 +874,22 @@
                             return false;
                         }
 
-                        // Subset of script starting at the most recent
-                        // codeseparator
-                        CScript scriptCode(pbegincodehash, pend);
+                        bool fSuccess = false;
+                        if (vchSig.size()) {
+                            // Subset of script starting at the most recent
+                            // codeseparator
+                            CScript scriptCode(pbegincodehash, pend);
 
-                        // Remove signature for pre-fork scripts
-                        CleanupScriptCode(scriptCode, vchSig, flags);
+                            // Remove signature for pre-fork scripts
+                            CleanupScriptCode(scriptCode, vchSig, flags);
 
-                        bool fSuccess = checker.CheckSig(vchSig, vchPubKey,
-                                                         scriptCode, flags);
+                            fSuccess = checker.CheckSig(vchSig, vchPubKey,
+                                                        scriptCode, flags);
 
-                        if (!fSuccess && (flags & SCRIPT_VERIFY_NULLFAIL) &&
-                            vchSig.size()) {
-                            return set_error(serror, ScriptError::SIG_NULLFAIL);
+                            if (!fSuccess && (flags & SCRIPT_VERIFY_NULLFAIL)) {
+                                return set_error(serror,
+                                                 ScriptError::SIG_NULLFAIL);
+                            }
                         }
 
                         popstack(stack);
@@ -929,11 +932,11 @@
                                 .Finalize(vchHash.data());
                             fSuccess = checker.VerifySignature(
                                 vchSig, CPubKey(vchPubKey), uint256(vchHash));
-                        }
 
-                        if (!fSuccess && (flags & SCRIPT_VERIFY_NULLFAIL) &&
-                            vchSig.size()) {
-                            return set_error(serror, ScriptError::SIG_NULLFAIL);
+                            if (!fSuccess && (flags & SCRIPT_VERIFY_NULLFAIL)) {
+                                return set_error(serror,
+                                                 ScriptError::SIG_NULLFAIL);
+                            }
                         }
 
                         popstack(stack);