diff --git a/src/switch_core_db.c b/src/switch_core_db.c index 40ca6f2bfb..094f6d98f8 100644 --- a/src/switch_core_db.c +++ b/src/switch_core_db.c @@ -79,12 +79,13 @@ SWITCH_DECLARE(int) switch_core_db_exec(switch_core_db_t *db, const char *sql, s { int ret = 0; int sane = 100; + char *err = NULL; while(--sane > 0) { - ret = sqlite3_exec(db, sql, callback, data, errmsg); + ret = sqlite3_exec(db, sql, callback, data, &err); if (ret == SQLITE_BUSY || ret == SQLITE_LOCKED) { if (sane > 1) { - switch_safe_free(*errmsg); + switch_safe_free(err); switch_yield(1000); continue; } @@ -93,6 +94,10 @@ SWITCH_DECLARE(int) switch_core_db_exec(switch_core_db_t *db, const char *sql, s } } + if (err && errmsg) { + *errmsg = err; + } + return ret; }