# # patch "ChangeLog" # from [b62f15f717fc6e20423c234e28e14a9ab4911ce8] # to [479f8d96506852ef9a05ed25bae57211b82bd929] # # patch "database.cc" # from [181e7b79e4435b2ffa1561ce8b9162a41563ed72] # to [1ce26993177acbeb3e3d18aba17f43700372fa3c] # --- ChangeLog +++ ChangeLog @@ -1,3 +1,9 @@ +2005-06-17 Matt Johnston + + * database.cc (database::execute()): truncate long query log messages + before copying, saving memory. + Patch from Eric Anderson < ea at cello hpl hp com > + 2005-06-17 Riccardo Ghetta Adds include()/includedir() to lua hooks and extend --rcfile * lua.cc: handle --rcfile with directories, implement --- database.cc +++ database.cc @@ -12,6 +12,7 @@ #include #include +#include #include #include @@ -643,24 +644,28 @@ 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);