mirror of
https://github.com/sqlite/sqlite.git
synced 2025-08-07 02:42:48 +03:00
Merge enhancements from trunk, including the new sqlite3_value_dup() API and
the addition of the apSqlParam field in the sqlite3_rtree_query_info object of R-Tree. FossilOrigin-Name: cdc0ca6fb36e787b981fb544a27c6df838f85704
This commit is contained in:
@@ -212,6 +212,36 @@ int sqlite3_value_type(sqlite3_value* pVal){
|
||||
return aType[pVal->flags&MEM_AffMask];
|
||||
}
|
||||
|
||||
/* Make a copy of an sqlite3_value object
|
||||
*/
|
||||
sqlite3_value *sqlite3_value_dup(const sqlite3_value *pOrig){
|
||||
sqlite3_value *pNew;
|
||||
if( pOrig==0 ) return 0;
|
||||
pNew = sqlite3_malloc( sizeof(*pNew) );
|
||||
if( pNew==0 ) return 0;
|
||||
memset(pNew, 0, sizeof(*pNew));
|
||||
memcpy(pNew, pOrig, MEMCELLSIZE);
|
||||
pNew->flags &= ~MEM_Dyn;
|
||||
pNew->db = 0;
|
||||
if( pNew->flags&(MEM_Str|MEM_Blob) ){
|
||||
pNew->flags &= ~(MEM_Static|MEM_Dyn);
|
||||
pNew->flags |= MEM_Ephem;
|
||||
if( sqlite3VdbeMemMakeWriteable(pNew)!=SQLITE_OK ){
|
||||
sqlite3ValueFree(pNew);
|
||||
pNew = 0;
|
||||
}
|
||||
}
|
||||
return pNew;
|
||||
}
|
||||
|
||||
/* Destroy an sqlite3_value object previously obtained from
|
||||
** sqlite3_value_dup().
|
||||
*/
|
||||
void sqlite3_value_free(sqlite3_value *pOld){
|
||||
sqlite3ValueFree(pOld);
|
||||
}
|
||||
|
||||
|
||||
/**************************** sqlite3_result_ *******************************
|
||||
** The following routines are used by user-defined functions to specify
|
||||
** the function result.
|
||||
|
Reference in New Issue
Block a user