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].

george 2022-05-14 17:42 trunk
Commit 3b42738e365e742735ce98493464ac7535dcc7872fa12c699aff323dc70a090f
1 file changed +3 -1
+3 -1
--- src/tkt.c
+++ src/tkt.c
@@ -240,17 +240,19 @@
240240
if( strcmp(zBaseName,"mimetype")==0 ){
241241
zMimetype = p->aField[i].zValue;
242242
}
243243
}
244244
if( rid>0 ){
245
+ int bReplace = 1;
245246
for(i=0; i<p->nField; i++){
246247
const char *zName = p->aField[i].zName;
247248
const char *zBaseName = zName[0]=='+' ? zName+1 : zName;
248249
j = fieldId(zBaseName);
249250
if( j<0 ) continue;
250251
backlink_extract(p->aField[i].zValue, zMimetype, rid, BKLNK_TICKET,
251
- p->rDate, i==0);
252
+ p->rDate, bReplace);
253
+ bReplace = 0;
252254
}
253255
}
254256
blob_append_sql(&sql1, " WHERE tkt_id=%d", tktid);
255257
db_prepare(&q, "%s", blob_sql_text(&sql1));
256258
db_bind_double(&q, ":mtime", p->rDate);
257259
--- 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

Keyboard Shortcuts

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