aboutsummaryrefslogtreecommitdiff
path: root/src/func.c
diff options
context:
space:
mode:
authordrh <drh@noemail.net>2014-09-11 18:44:04 +0000
committerdrh <drh@noemail.net>2014-09-11 18:44:04 +0000
commit46c831bf2a9195891dfb213e6c40ca3f22b09688 (patch)
tree10b598e883a8c911a751b145edf5a959ae12dd95 /src/func.c
parent3586f9837d8ba16e19e0b730257124bc111b3163 (diff)
parentbbf483f8553fb37ac73f58e0ec9f7d1e469792f3 (diff)
downloadsqlite-46c831bf2a9195891dfb213e6c40ca3f22b09688.tar.gz
sqlite-46c831bf2a9195891dfb213e6c40ca3f22b09688.zip
Add new APIs that take 64-bit length parameters: sqlite3_malloc64(),
sqlite3_realloc64(), sqlite3_bind_blob64(), sqlite3_bind_text64(), sqlite3_result_blob64(), and sqlite3_result_text64(). Add the sqlite3_msize() interface. Internal memory allocation routines now use 64-bit unsigned length parameters for safety. Fix the sqlite3_get_table() to use sqlite3_realloc64() to avoid a integer overflow problem. FossilOrigin-Name: 7e4978c003867d1b532b69221013dda75ca61953
Diffstat (limited to 'src/func.c')
-rw-r--r--src/func.c9
1 files changed, 5 insertions, 4 deletions
diff --git a/src/func.c b/src/func.c
index 94ad1b62d..f7e50f337 100644
--- a/src/func.c
+++ b/src/func.c
@@ -325,13 +325,14 @@ static void substrFunc(
for(z2=z; *z2 && p2; p2--){
SQLITE_SKIP_UTF8(z2);
}
- sqlite3_result_text(context, (char*)z, (int)(z2-z), SQLITE_TRANSIENT);
+ sqlite3_result_text64(context, (char*)z, z2-z, SQLITE_TRANSIENT,
+ SQLITE_UTF8);
}else{
if( p1+p2>len ){
p2 = len-p1;
if( p2<0 ) p2 = 0;
}
- sqlite3_result_blob(context, (char*)&z[p1], (int)p2, SQLITE_TRANSIENT);
+ sqlite3_result_blob64(context, (char*)&z[p1], (u64)p2, SQLITE_TRANSIENT);
}
}
@@ -390,7 +391,7 @@ static void *contextMalloc(sqlite3_context *context, i64 nByte){
sqlite3_result_error_toobig(context);
z = 0;
}else{
- z = sqlite3Malloc((int)nByte);
+ z = sqlite3Malloc(nByte);
if( !z ){
sqlite3_result_error_nomem(context);
}
@@ -1041,7 +1042,7 @@ static void charFunc(
*zOut++ = 0x80 + (u8)(c & 0x3F);
} \
}
- sqlite3_result_text(context, (char*)z, (int)(zOut-z), sqlite3_free);
+ sqlite3_result_text64(context, (char*)z, zOut-z, sqlite3_free, SQLITE_UTF8);
}
/*