Fossil SCM

A tiny optimization inside of <tt>ticket_insert()</tt>: rearrange two <tt>db_finalize()</tt> calls in order to avoid additional <tt>malloc()</tt> for <var>zMimetype</var>.

george 2022-05-14 19:12 generated-tkt-mimetype
Commit 563c6b9e4e6d6682852fa2fdb1b2b34da16f8d601dab361cdd33609685f05e36
1 file changed +4 -7
+4 -7
--- src/tkt.c
+++ src/tkt.c
@@ -253,14 +253,14 @@
253253
}
254254
blob_append_sql(&sql1, " WHERE tkt_id=%d", tktid);
255255
db_prepare(&q, "%s", blob_sql_text(&sql1));
256256
db_bind_double(&q, ":mtime", p->rDate);
257257
db_step(&q);
258
- db_finalize(&q);
259258
blob_reset(&sql1);
260259
if( blob_size(&sql2)>0 || haveTicketChngRid || haveTicketChngUser ){
261260
int fromTkt = 0;
261
+ db_finalize(&q);
262262
if( haveTicketChngRid ){
263263
blob_append_literal(&sql2, ",tkt_rid");
264264
blob_append_sql(&sql3, ",%d", rid);
265265
}
266266
if( haveTicketChngUser && p->zUser ){
@@ -291,14 +291,14 @@
291291
haveTicketChngGenMt ? " RETURNING mimetype" : "");
292292
}
293293
db_bind_double(&q, ":mtime", p->rDate);
294294
db_step(&q);
295295
if( haveTicketChngGenMt ){
296
- zMimetype = db_column_malloc(&q, 0);
296
+ zMimetype = db_column_text(&q, 0);
297297
}
298
- db_finalize(&q);
299298
}
299
+ fossil_free(aUsed);
300300
blob_reset(&sql2);
301301
blob_reset(&sql3);
302302
if( rid>0 ){
303303
int bReplace = 1;
304304
for(i=0; i<p->nField; i++){
@@ -309,14 +309,11 @@
309309
backlink_extract(p->aField[i].zValue, zMimetype, rid, BKLNK_TICKET,
310310
p->rDate, bReplace);
311311
bReplace = 0;
312312
}
313313
}
314
- fossil_free(aUsed);
315
- if( haveTicketChngGenMt && zMimetype ){
316
- fossil_free((char*)zMimetype);
317
- }
314
+ db_finalize(&q);
318315
return tktid;
319316
}
320317
321318
/*
322319
** Returns non-zero if moderation is required for ticket changes and ticket
323320
--- src/tkt.c
+++ src/tkt.c
@@ -253,14 +253,14 @@
253 }
254 blob_append_sql(&sql1, " WHERE tkt_id=%d", tktid);
255 db_prepare(&q, "%s", blob_sql_text(&sql1));
256 db_bind_double(&q, ":mtime", p->rDate);
257 db_step(&q);
258 db_finalize(&q);
259 blob_reset(&sql1);
260 if( blob_size(&sql2)>0 || haveTicketChngRid || haveTicketChngUser ){
261 int fromTkt = 0;
 
262 if( haveTicketChngRid ){
263 blob_append_literal(&sql2, ",tkt_rid");
264 blob_append_sql(&sql3, ",%d", rid);
265 }
266 if( haveTicketChngUser && p->zUser ){
@@ -291,14 +291,14 @@
291 haveTicketChngGenMt ? " RETURNING mimetype" : "");
292 }
293 db_bind_double(&q, ":mtime", p->rDate);
294 db_step(&q);
295 if( haveTicketChngGenMt ){
296 zMimetype = db_column_malloc(&q, 0);
297 }
298 db_finalize(&q);
299 }
 
300 blob_reset(&sql2);
301 blob_reset(&sql3);
302 if( rid>0 ){
303 int bReplace = 1;
304 for(i=0; i<p->nField; i++){
@@ -309,14 +309,11 @@
309 backlink_extract(p->aField[i].zValue, zMimetype, rid, BKLNK_TICKET,
310 p->rDate, bReplace);
311 bReplace = 0;
312 }
313 }
314 fossil_free(aUsed);
315 if( haveTicketChngGenMt && zMimetype ){
316 fossil_free((char*)zMimetype);
317 }
318 return tktid;
319 }
320
321 /*
322 ** Returns non-zero if moderation is required for ticket changes and ticket
323
--- src/tkt.c
+++ src/tkt.c
@@ -253,14 +253,14 @@
253 }
254 blob_append_sql(&sql1, " WHERE tkt_id=%d", tktid);
255 db_prepare(&q, "%s", blob_sql_text(&sql1));
256 db_bind_double(&q, ":mtime", p->rDate);
257 db_step(&q);
 
258 blob_reset(&sql1);
259 if( blob_size(&sql2)>0 || haveTicketChngRid || haveTicketChngUser ){
260 int fromTkt = 0;
261 db_finalize(&q);
262 if( haveTicketChngRid ){
263 blob_append_literal(&sql2, ",tkt_rid");
264 blob_append_sql(&sql3, ",%d", rid);
265 }
266 if( haveTicketChngUser && p->zUser ){
@@ -291,14 +291,14 @@
291 haveTicketChngGenMt ? " RETURNING mimetype" : "");
292 }
293 db_bind_double(&q, ":mtime", p->rDate);
294 db_step(&q);
295 if( haveTicketChngGenMt ){
296 zMimetype = db_column_text(&q, 0);
297 }
 
298 }
299 fossil_free(aUsed);
300 blob_reset(&sql2);
301 blob_reset(&sql3);
302 if( rid>0 ){
303 int bReplace = 1;
304 for(i=0; i<p->nField; i++){
@@ -309,14 +309,11 @@
309 backlink_extract(p->aField[i].zValue, zMimetype, rid, BKLNK_TICKET,
310 p->rDate, bReplace);
311 bReplace = 0;
312 }
313 }
314 db_finalize(&q);
 
 
 
315 return tktid;
316 }
317
318 /*
319 ** Returns non-zero if moderation is required for ticket changes and ticket
320

Keyboard Shortcuts

Open search /
Next entry (timeline) j
Previous entry (timeline) k
Open focused entry Enter
Show this help ?
Toggle theme Top nav button