diff --git a/test/encode_test_driver.cc b/test/encode_test_driver.cc
index da7e32b51741ea239044d275c8fd153a5cde9a2c..6d4281d67f7bd45203b02b25879ac24ad432ff24 100644
--- a/test/encode_test_driver.cc
+++ b/test/encode_test_driver.cc
@@ -69,7 +69,10 @@ void Encoder::EncodeFrameInternal(const VideoSource &video,
 void Encoder::Flush() {
   const vpx_codec_err_t res = vpx_codec_encode(&encoder_, NULL, 0, 0, 0,
                                                deadline_);
-  ASSERT_EQ(VPX_CODEC_OK, res) << EncoderError();
+  if (!encoder_.priv)
+    ASSERT_EQ(VPX_CODEC_ERROR, res) << EncoderError();
+  else
+    ASSERT_EQ(VPX_CODEC_OK, res) << EncoderError();
 }
 
 void EncoderTest::InitializeConfig() {
diff --git a/test/video_source.h b/test/video_source.h
index f7e31d42acea794525f0e7c242c7b33b86d2ccda..94500b43d3e887ea63791e4b7bd4faebc7ebb864 100644
--- a/test/video_source.h
+++ b/test/video_source.h
@@ -142,7 +142,7 @@ class DummyVideoSource : public VideoSource {
   }
 
  protected:
-  virtual void FillFrame() { memset(img_->img_data, 0, raw_sz_); }
+  virtual void FillFrame() { if (img_) memset(img_->img_data, 0, raw_sz_); }
 
   vpx_image_t *img_;
   size_t       raw_sz_;
@@ -170,11 +170,13 @@ class RandomVideoSource : public DummyVideoSource {
   // 15 frames of noise, followed by 15 static frames. Reset to 0 rather
   // than holding previous frames to encourage keyframes to be thrown.
   virtual void FillFrame() {
-    if (frame_ % 30 < 15)
-      for (size_t i = 0; i < raw_sz_; ++i)
-        img_->img_data[i] = rnd_.Rand8();
-    else
-      memset(img_->img_data, 0, raw_sz_);
+    if (img_) {
+      if (frame_ % 30 < 15)
+        for (size_t i = 0; i < raw_sz_; ++i)
+          img_->img_data[i] = rnd_.Rand8();
+      else
+        memset(img_->img_data, 0, raw_sz_);
+    }
   }
 
   ACMRandom rnd_;