Sophie

Sophie

distrib > Fedora > 13 > i386 > media > updates-src > by-pkgid > c45519626ff744e22de67450940e0fdf > files > 3

monotone-0.48.1-1.fc13.src.rpm

#
#
# patch "database.cc"
#  from [0bc6ce7bb27323c3724ee95f099985a3abad21f3]
#    to [b2b6048b199175b85cdf2c290302cb8da095c12a]
# 
# patch "tests/fail_cleanly_on_unreadable_db/__driver__.lua"
#  from [1ec557d1aef9eac9ee53a22d07f4ba0f3456da5e]
#    to [8875c78a070bef87904bb840ed3cffa0acba4399]
#
============================================================
--- database.cc	0bc6ce7bb27323c3724ee95f099985a3abad21f3
+++ database.cc	b2b6048b199175b85cdf2c290302cb8da095c12a
@@ -1489,12 +1489,19 @@ database_impl::fetch(results & res,
       vector<string> row;
       for (int col = 0; col < ncol; col++)
         {
+          // We never store NULLs, so we should never see one.
+          int const datatype = sqlite3_column_type(i->second.stmt(), col);
+          E(datatype != SQLITE_NULL, origin::database,
+            F("null result in query: %s") % query.sql_cmd);
           const char * value = (const char*)sqlite3_column_blob(i->second.stmt(), col);
           int bytes = sqlite3_column_bytes(i->second.stmt(), col);
-          E(value, origin::database,
-            F("null result in query: %s") % query.sql_cmd);
-          row.push_back(string(value, value + bytes));
-          //L(FL("row %d col %d value='%s'") % nrow % col % value);
+          if (value) {
+            row.push_back(string(value, value + bytes));
+          } else {
+            // sqlite3_column_blob() returns null for zero-length
+            I(bytes == 0);
+            row.push_back(string());
+          }
         }
       res.push_back(row);
     }
============================================================
--- tests/fail_cleanly_on_unreadable_db/__driver__.lua	1ec557d1aef9eac9ee53a22d07f4ba0f3456da5e
+++ tests/fail_cleanly_on_unreadable_db/__driver__.lua	8875c78a070bef87904bb840ed3cffa0acba4399
@@ -48,7 +48,6 @@ check(mtn("--db=subdir/foo.db", "db", "v
 check(mtn("--db=subdir/foo.db", "ls", "branches"), 0, false, false)
 check(mtn("--db=subdir/foo.db", "db", "info"), 0, false, false)
 check(mtn("--db=subdir/foo.db", "db", "version"), 0, false, false)
-check(mtn("--db=subdir/foo.db", "db", "migrate"), 1, false, false)
 check(mtn("--db=subdir/bar.db", "db", "load"), 1, false, false)
 check(mtn("--db=subdir/baz.db", "db", "init"), 1, false, false)
 check({"chmod", "a+w", "subdir"})