diff --git a/manifest b/manifest
index fb39c51..975aaa7 100644
--- a/manifest
+++ b/manifest
@@ -1,5 +1,5 @@
-C Improved\stestability.
-D 2016-01-11T00:52:32.218
+C Add\sa\stest\scase\sto\swaloverwrite.test\sto\scheck\sthat\ssavepoint\srollback\sdoes\snot\scause\sa\sproblem.
+D 2016-01-11T08:12:40.471
 F Makefile.in 7c8cc4c2f0179efc6fa9492141d1fb65f4807054
 F Makefile.linux-gcc 7bc79876b875010e8c8f9502eb935ca92aa3c434
 F Makefile.msc e45d8b9b56dfa3f2cd860b2c28bd9d304513b042
@@ -1301,7 +1301,7 @@
 F test/walhook.test ed00a40ba7255da22d6b66433ab61fab16a63483
 F test/walmode.test 4022fe03ae6e830583672caa101f046438a0473c
 F test/walnoshm.test 84ca10c544632a756467336b7c3b864d493ee496
-F test/waloverwrite.test 59476a2cf0638a057ced738b62dc719ed4e32e53
+F test/waloverwrite.test 8702964967c2f28204f0b4f27af65da81999fc99
 F test/walpersist.test 8c6b7e3ec1ba91b5e4dc4e0921d6d3f87cd356a6
 F test/walro.test 34422d1d95aaff0388f0791ec20edb34e2a3ed57
 F test/walshared.test 0befc811dcf0b287efae21612304d15576e35417
@@ -1407,7 +1407,7 @@
 F tool/warnings-clang.sh f6aa929dc20ef1f856af04a730772f59283631d4
 F tool/warnings.sh 48bd54594752d5be3337f12c72f28d2080cb630b
 F tool/win/sqlite.vsix deb315d026cc8400325c5863eef847784a219a2f
-P 99b31a6b491c1c51227f478d3713b020d37a17cf
-R d76e78fad37168874a95f2cf1af1f963
-U drh
-Z b9a236105d87275bc956baaa16673a98
+P e83d3a2a4e06665e8a056f63063bd6df03f063b9
+R 328bc4f1800dd81a2ef2edb5973d61be
+U dan
+Z 271430cf4c8b2d1a2970f55a9b9d9220
diff --git a/manifest.uuid b/manifest.uuid
index 23e6efc..a1ad7a1 100644
--- a/manifest.uuid
+++ b/manifest.uuid
@@ -1 +1 @@
-e83d3a2a4e06665e8a056f63063bd6df03f063b9
\ No newline at end of file
+87dae56c322454094d445e474ae36a4f464272a4
\ No newline at end of file
diff --git a/test/waloverwrite.test b/test/waloverwrite.test
index 02fe4c1..5e51a70 100644
--- a/test/waloverwrite.test
+++ b/test/waloverwrite.test
@@ -22,18 +22,28 @@
 
 # Simple test:
 #
-#   1. Create a database of blobs roughly 50 pages in size.
+# Test cases *.1 - *.6:
 #
-#   2. Set the db cache size to something much smaller than this (5 pages)
+#   + Create a database of blobs roughly 50 pages in size.
 #
-#   3. Within a transaction, loop through the set of blobs 5 times. Update
+#   + Set the db cache size to something much smaller than this (5 pages)
+#
+#   + Within a transaction, loop through the set of blobs 5 times. Update
 #      each blob as it is visited.
 #
-#   4. Test that the wal file is roughly 50 pages in size - even though many
+#   + Test that the wal file is roughly 50 pages in size - even though many
 #      database pages have been written to it multiple times.
 #
-#   5. Take a copy of the database and wal file. Test that recovery can
-#      be run on it.
+#   + Take a copy of the database and wal file. Test that recovery can
+#     be run on it.
+#
+# Test cases *.7 - *.9:
+#
+#   + Same thing, but before committing the statement transaction open
+#     a SAVEPOINT, update the blobs another 5 times, then roll it back.
+#
+#   + Check that if recovery is run on the resulting wal file, the rolled
+#     back changes from within the SAVEPOINT are not present in the db.
 #
 # The above is run twice - once where the wal file is empty at the start of
 # step 3 (tn==1) and once where it already contains a transaction (tn==2).
@@ -45,6 +55,7 @@
   reset_db
   do_execsql_test 1.$tn.0 {
     CREATE TABLE t1(x, y);
+    CREATE TABLE t2(x, y);
     CREATE INDEX i1y ON t1(y);
   
     WITH cnt(i) AS (
@@ -98,6 +109,55 @@
   do_test 1.$tn.6 {
     execsql { PRAGMA integrity_check } db2
   } ok
+  db2 close
+
+  do_test 1.$tn.7 {
+    execsql { PRAGMA wal_checkpoint }
+    db transaction {
+      for {set i 0} {$i < 1} {incr i} {
+        foreach x [db eval {SELECT x FROM t1}] {
+          execsql { UPDATE t1 SET y = randomblob(798) WHERE x=$x }
+        }
+      }
+
+      execsql {
+        WITH cnt(i) AS (SELECT 1 UNION ALL SELECT i+1 FROM cnt WHERE i<20)
+        INSERT INTO t2 SELECT i, randomblob(800) FROM cnt;
+      }
+
+      execsql {SAVEPOINT abc}
+      for {set i 0} {$i < 5} {incr i} {
+        foreach x [db eval {SELECT x FROM t1}] {
+          execsql { UPDATE t1 SET y = randomblob(797) WHERE x=$x }
+        }
+      }
+      breakpoint
+      execsql {ROLLBACK TO abc}
+
+    }
+
+    set nPg [wal_frame_count test.db-wal 1024]
+    expr $nPg>55 && $nPg<75
+  } {1}
+
+  do_test 1.$tn.8 {
+    forcedelete test.db2 test.db2-wal
+    forcecopy test.db test.db2
+    sqlite3 db2 test.db2
+    execsql { SELECT sum(length(y)) FROM t1 } db2
+  } [expr 20*799]
+
+  do_test 1.$tn.9 {
+    db2 close
+    forcecopy test.db-wal test.db2-wal
+    sqlite3 db2 test.db2
+    execsql { SELECT sum(length(y)) FROM t1 } db2
+  } [expr 20*798]
+
+  do_test 1.$tn.9 {
+    execsql { PRAGMA integrity_check } db2
+  } ok
+  db2 close
 }
 
 finish_test
