Fossil SCM
Fix a subtle bug in <code>ticket_insert()</code> which may lead to redundant rows in the BACKLINK table. The bug appeared in [7c13a57358ae].
Commit
3b42738e365e742735ce98493464ac7535dcc7872fa12c699aff323dc70a090f
Parent
07d739b4baf20af…
1 file changed
+3
-1
+3
-1
| --- src/tkt.c | ||
| +++ src/tkt.c | ||
| @@ -240,17 +240,19 @@ | ||
| 240 | 240 | if( strcmp(zBaseName,"mimetype")==0 ){ |
| 241 | 241 | zMimetype = p->aField[i].zValue; |
| 242 | 242 | } |
| 243 | 243 | } |
| 244 | 244 | if( rid>0 ){ |
| 245 | + int bReplace = 1; | |
| 245 | 246 | for(i=0; i<p->nField; i++){ |
| 246 | 247 | const char *zName = p->aField[i].zName; |
| 247 | 248 | const char *zBaseName = zName[0]=='+' ? zName+1 : zName; |
| 248 | 249 | j = fieldId(zBaseName); |
| 249 | 250 | if( j<0 ) continue; |
| 250 | 251 | backlink_extract(p->aField[i].zValue, zMimetype, rid, BKLNK_TICKET, |
| 251 | - p->rDate, i==0); | |
| 252 | + p->rDate, bReplace); | |
| 253 | + bReplace = 0; | |
| 252 | 254 | } |
| 253 | 255 | } |
| 254 | 256 | blob_append_sql(&sql1, " WHERE tkt_id=%d", tktid); |
| 255 | 257 | db_prepare(&q, "%s", blob_sql_text(&sql1)); |
| 256 | 258 | db_bind_double(&q, ":mtime", p->rDate); |
| 257 | 259 |
| --- src/tkt.c | |
| +++ src/tkt.c | |
| @@ -240,17 +240,19 @@ | |
| 240 | if( strcmp(zBaseName,"mimetype")==0 ){ |
| 241 | zMimetype = p->aField[i].zValue; |
| 242 | } |
| 243 | } |
| 244 | if( rid>0 ){ |
| 245 | for(i=0; i<p->nField; i++){ |
| 246 | const char *zName = p->aField[i].zName; |
| 247 | const char *zBaseName = zName[0]=='+' ? zName+1 : zName; |
| 248 | j = fieldId(zBaseName); |
| 249 | if( j<0 ) continue; |
| 250 | backlink_extract(p->aField[i].zValue, zMimetype, rid, BKLNK_TICKET, |
| 251 | p->rDate, i==0); |
| 252 | } |
| 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 |
| --- src/tkt.c | |
| +++ src/tkt.c | |
| @@ -240,17 +240,19 @@ | |
| 240 | if( strcmp(zBaseName,"mimetype")==0 ){ |
| 241 | zMimetype = p->aField[i].zValue; |
| 242 | } |
| 243 | } |
| 244 | if( rid>0 ){ |
| 245 | int bReplace = 1; |
| 246 | for(i=0; i<p->nField; i++){ |
| 247 | const char *zName = p->aField[i].zName; |
| 248 | const char *zBaseName = zName[0]=='+' ? zName+1 : zName; |
| 249 | j = fieldId(zBaseName); |
| 250 | if( j<0 ) continue; |
| 251 | backlink_extract(p->aField[i].zValue, zMimetype, rid, BKLNK_TICKET, |
| 252 | p->rDate, bReplace); |
| 253 | bReplace = 0; |
| 254 | } |
| 255 | } |
| 256 | blob_append_sql(&sql1, " WHERE tkt_id=%d", tktid); |
| 257 | db_prepare(&q, "%s", blob_sql_text(&sql1)); |
| 258 | db_bind_double(&q, ":mtime", p->rDate); |
| 259 |