The unified diff between revisions [869f0c37..] and [e24ccc23..] is displayed below. It can also be downloaded as a raw diff.

This diff has been restricted to the following files: 'database.cc'

#
#
# patch "database.cc"
#  from [181e7b79e4435b2ffa1561ce8b9162a41563ed72]
#    to [1ce26993177acbeb3e3d18aba17f43700372fa3c]
#
============================================================
--- database.cc	181e7b79e4435b2ffa1561ce8b9162a41563ed72
+++ database.cc	1ce26993177acbeb3e3d18aba17f43700372fa3c
@@ -12,6 +12,7 @@
 #include <vector>

 #include <stdarg.h>
+#include <string.h>

 #include <boost/shared_ptr.hpp>
 #include <boost/lexical_cast.hpp>
@@ -643,24 +644,28 @@ database::execute(char const * query, ..
 database::execute(char const * query, ...)
 {
   va_list ap;
-  int res;
-  char * errmsg = NULL;

   va_start(ap, query);

   // log it
   char * formatted = sqlite3_vmprintf(query, ap);
-  string qq(formatted);
-  if (qq.size() > constants::db_log_line_sz)
-    qq = qq.substr(0, constants::db_log_line_sz) + string(" ...");
+  string qq;
+
+  if (strlen(formatted) > constants::db_log_line_sz)
+    {
+      qq.assign(formatted, constants::db_log_line_sz);
+      qq.append(" ...");
+    }
+  else
+    {
+      qq = formatted;
+    }
   L(F("db.execute(\"%s\")\n") % qq);
-  sqlite3_free(formatted);

-  va_end(ap);
-  va_start(ap, query);
-
   // do it
-  res = sqlite3_exec_vprintf(sql(), query, NULL, NULL, &errmsg, ap);
+  char * errmsg = NULL;
+  int res = sqlite3_exec(sql(), formatted, NULL, NULL, &errmsg);
+  sqlite3_free(formatted);

   va_end(ap);