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>.
Commit
563c6b9e4e6d6682852fa2fdb1b2b34da16f8d601dab361cdd33609685f05e36
Parent
5ab73ab8c7be3a0…
1 file changed
+4
-7
+4
-7
| --- src/tkt.c | ||
| +++ src/tkt.c | ||
| @@ -253,14 +253,14 @@ | ||
| 253 | 253 | } |
| 254 | 254 | blob_append_sql(&sql1, " WHERE tkt_id=%d", tktid); |
| 255 | 255 | db_prepare(&q, "%s", blob_sql_text(&sql1)); |
| 256 | 256 | db_bind_double(&q, ":mtime", p->rDate); |
| 257 | 257 | db_step(&q); |
| 258 | - db_finalize(&q); | |
| 259 | 258 | blob_reset(&sql1); |
| 260 | 259 | if( blob_size(&sql2)>0 || haveTicketChngRid || haveTicketChngUser ){ |
| 261 | 260 | int fromTkt = 0; |
| 261 | + db_finalize(&q); | |
| 262 | 262 | if( haveTicketChngRid ){ |
| 263 | 263 | blob_append_literal(&sql2, ",tkt_rid"); |
| 264 | 264 | blob_append_sql(&sql3, ",%d", rid); |
| 265 | 265 | } |
| 266 | 266 | if( haveTicketChngUser && p->zUser ){ |
| @@ -291,14 +291,14 @@ | ||
| 291 | 291 | haveTicketChngGenMt ? " RETURNING mimetype" : ""); |
| 292 | 292 | } |
| 293 | 293 | db_bind_double(&q, ":mtime", p->rDate); |
| 294 | 294 | db_step(&q); |
| 295 | 295 | if( haveTicketChngGenMt ){ |
| 296 | - zMimetype = db_column_malloc(&q, 0); | |
| 296 | + zMimetype = db_column_text(&q, 0); | |
| 297 | 297 | } |
| 298 | - db_finalize(&q); | |
| 299 | 298 | } |
| 299 | + fossil_free(aUsed); | |
| 300 | 300 | blob_reset(&sql2); |
| 301 | 301 | blob_reset(&sql3); |
| 302 | 302 | if( rid>0 ){ |
| 303 | 303 | int bReplace = 1; |
| 304 | 304 | for(i=0; i<p->nField; i++){ |
| @@ -309,14 +309,11 @@ | ||
| 309 | 309 | backlink_extract(p->aField[i].zValue, zMimetype, rid, BKLNK_TICKET, |
| 310 | 310 | p->rDate, bReplace); |
| 311 | 311 | bReplace = 0; |
| 312 | 312 | } |
| 313 | 313 | } |
| 314 | - fossil_free(aUsed); | |
| 315 | - if( haveTicketChngGenMt && zMimetype ){ | |
| 316 | - fossil_free((char*)zMimetype); | |
| 317 | - } | |
| 314 | + db_finalize(&q); | |
| 318 | 315 | return tktid; |
| 319 | 316 | } |
| 320 | 317 | |
| 321 | 318 | /* |
| 322 | 319 | ** Returns non-zero if moderation is required for ticket changes and ticket |
| 323 | 320 |
| --- 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 |