/* * Cleans up column values left after last Next/Column calls. * Return 1 if cur->pCols is not null. * Otherwise, 0 */ int flexi_free_cursor_values(struct flexi_VTabCursor *cur) { if (cur->pCols != NULL) { struct flexi_ClassDef_t *vtab = (void *) cur->base.pVtab; for (int ii = 0; ii < vtab->propsByName.count; ii++) { if (cur->pCols[ii] != NULL) { sqlite3_value_free(cur->pCols[ii]); cur->pCols[ii] = NULL; } } return 1; } return 0; }
static void _freeSqliteValue(sqlite3_value **pVal) { sqlite3_value_free(*pVal); }
static void _freeSqlArg(SqlArg_t *p) { sqlite3_value_free(p->pValue); sqlite3_free(p->zText); }
DLL_FUNCTION(void) BU_SQLite_Value_Free(sqlite3_value* pValue) { return sqlite3_value_free(pValue); }