aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/json.c18
1 files changed, 12 insertions, 6 deletions
diff --git a/src/json.c b/src/json.c
index 24b3613e1..493a1b99c 100644
--- a/src/json.c
+++ b/src/json.c
@@ -563,12 +563,18 @@ static void jsonAppendValue(
** The JSON string is reset.
*/
static void jsonResult(JsonString *p){
- if( p->bErr==0 && jsonForceRCStr(p) ){
- sqlite3RCStrRef(p->zBuf);
- sqlite3_result_text64(p->pCtx, p->zBuf, p->nUsed,
- (void(*)(void*))sqlite3RCStrUnref,
- SQLITE_UTF8);
- }else if( p->bErr==1 ){
+ if( p->bErr==0 ){
+ if( p->bStatic ){
+ sqlite3_result_text64(p->pCtx, p->zBuf, p->nUsed,
+ SQLITE_TRANSIENT, SQLITE_UTF8);
+ }else if( jsonForceRCStr(p) ){
+ sqlite3RCStrRef(p->zBuf);
+ sqlite3_result_text64(p->pCtx, p->zBuf, p->nUsed,
+ (void(*)(void*))sqlite3RCStrUnref,
+ SQLITE_UTF8);
+ }
+ }
+ if( p->bErr==1 ){
sqlite3_result_error_nomem(p->pCtx);
}
jsonReset(p);