Fossil SCM

Changes to the "merge" command to work around what appears to be a bug in GCC 10.2.1 on Raspbian 10.2.1-6+rpi1, armv6, 32bit.

drh 2024-12-06 02:26 trunk
Commit 14959bc587effbd00d6550a408f8a56831a373d784d3e8f552fcf72a7d84b9f3
1 file changed +12 -7
+12 -7
--- src/merge.c
+++ src/merge.c
@@ -1225,10 +1225,12 @@
12251225
int isBinary = db_column_int(&q, 4);
12261226
const char *zName = db_column_text(&q, 5);
12271227
int isExe = db_column_int(&q, 6);
12281228
int islinkv = db_column_int(&q, 7);
12291229
int islinkm = db_column_int(&q, 8);
1230
+ const char *zFnp = db_column_text(&q, 9);
1231
+ const char *zFnm = db_column_text(&q, 10);
12301232
int chnged = db_column_int(&q, 11);
12311233
int rc;
12321234
char *zFullPath;
12331235
const char *zType = "MERGE";
12341236
Blob m, p, r;
@@ -1255,10 +1257,11 @@
12551257
);
12561258
}else{
12571259
i64 sz;
12581260
const char *zErrMsg = 0;
12591261
int nc = 0;
1262
+ Blob sql;
12601263
12611264
if( !dryRunFlag ) undo_save(zName);
12621265
zFullPath = mprintf("%s/%s", g.zLocalRoot, zName);
12631266
sz = file_size(zFullPath, ExtFILE);
12641267
content_get(ridp, &p);
@@ -1290,26 +1293,28 @@
12901293
nConflict++;
12911294
nc = 1;
12921295
zErrMsg = "cannot merge binary file";
12931296
zType = "ERROR";
12941297
}
1295
- db_multi_exec(
1298
+ blob_init(&sql, 0, 0);
1299
+ blob_append_sql(&sql,
12961300
"INSERT INTO mergestat(op,fnp,ridp,fn,ridv,sz,fnm,ridm,fnr,nc,msg)"
1297
- "VALUES(%Q,%Q,%d,%Q,iif(%d,%d,NULL),iif(%d,%d,NULL),%Q,%d,"
1298
- "%Q,%d,%Q)",
1301
+ "VALUES(%Q,%Q,%d,%Q,%d,%d,%Q,%d,%Q,%d,%Q)",
12991302
/* op */ zType,
1300
- /* fnp */ db_column_text(&q, 9),
1303
+ /* fnp */ zFnp,
13011304
/* ridp */ ridp,
13021305
/* fn */ zName,
1303
- /* ridv */ chnged==0, ridv,
1304
- /* sz */ chnged!=0, sz,
1305
- /* fnm */ db_column_text(&q, 10),
1306
+ /* ridv */ chnged==0 ? ridv : 0,
1307
+ /* sz */ chnged!=0 ? sz : 0,
1308
+ /* fnm */ zFnm,
13061309
/* ridm */ ridm,
13071310
/* fnr */ zName,
13081311
/* nc */ nc,
13091312
/* msg */ zErrMsg
13101313
);
1314
+ db_multi_exec("%s", blob_sql_text(&sql));
1315
+ blob_reset(&sql);
13111316
fossil_free(zFullPath);
13121317
blob_reset(&p);
13131318
blob_reset(&m);
13141319
blob_reset(&r);
13151320
}
13161321
--- src/merge.c
+++ src/merge.c
@@ -1225,10 +1225,12 @@
1225 int isBinary = db_column_int(&q, 4);
1226 const char *zName = db_column_text(&q, 5);
1227 int isExe = db_column_int(&q, 6);
1228 int islinkv = db_column_int(&q, 7);
1229 int islinkm = db_column_int(&q, 8);
 
 
1230 int chnged = db_column_int(&q, 11);
1231 int rc;
1232 char *zFullPath;
1233 const char *zType = "MERGE";
1234 Blob m, p, r;
@@ -1255,10 +1257,11 @@
1255 );
1256 }else{
1257 i64 sz;
1258 const char *zErrMsg = 0;
1259 int nc = 0;
 
1260
1261 if( !dryRunFlag ) undo_save(zName);
1262 zFullPath = mprintf("%s/%s", g.zLocalRoot, zName);
1263 sz = file_size(zFullPath, ExtFILE);
1264 content_get(ridp, &p);
@@ -1290,26 +1293,28 @@
1290 nConflict++;
1291 nc = 1;
1292 zErrMsg = "cannot merge binary file";
1293 zType = "ERROR";
1294 }
1295 db_multi_exec(
 
1296 "INSERT INTO mergestat(op,fnp,ridp,fn,ridv,sz,fnm,ridm,fnr,nc,msg)"
1297 "VALUES(%Q,%Q,%d,%Q,iif(%d,%d,NULL),iif(%d,%d,NULL),%Q,%d,"
1298 "%Q,%d,%Q)",
1299 /* op */ zType,
1300 /* fnp */ db_column_text(&q, 9),
1301 /* ridp */ ridp,
1302 /* fn */ zName,
1303 /* ridv */ chnged==0, ridv,
1304 /* sz */ chnged!=0, sz,
1305 /* fnm */ db_column_text(&q, 10),
1306 /* ridm */ ridm,
1307 /* fnr */ zName,
1308 /* nc */ nc,
1309 /* msg */ zErrMsg
1310 );
 
 
1311 fossil_free(zFullPath);
1312 blob_reset(&p);
1313 blob_reset(&m);
1314 blob_reset(&r);
1315 }
1316
--- src/merge.c
+++ src/merge.c
@@ -1225,10 +1225,12 @@
1225 int isBinary = db_column_int(&q, 4);
1226 const char *zName = db_column_text(&q, 5);
1227 int isExe = db_column_int(&q, 6);
1228 int islinkv = db_column_int(&q, 7);
1229 int islinkm = db_column_int(&q, 8);
1230 const char *zFnp = db_column_text(&q, 9);
1231 const char *zFnm = db_column_text(&q, 10);
1232 int chnged = db_column_int(&q, 11);
1233 int rc;
1234 char *zFullPath;
1235 const char *zType = "MERGE";
1236 Blob m, p, r;
@@ -1255,10 +1257,11 @@
1257 );
1258 }else{
1259 i64 sz;
1260 const char *zErrMsg = 0;
1261 int nc = 0;
1262 Blob sql;
1263
1264 if( !dryRunFlag ) undo_save(zName);
1265 zFullPath = mprintf("%s/%s", g.zLocalRoot, zName);
1266 sz = file_size(zFullPath, ExtFILE);
1267 content_get(ridp, &p);
@@ -1290,26 +1293,28 @@
1293 nConflict++;
1294 nc = 1;
1295 zErrMsg = "cannot merge binary file";
1296 zType = "ERROR";
1297 }
1298 blob_init(&sql, 0, 0);
1299 blob_append_sql(&sql,
1300 "INSERT INTO mergestat(op,fnp,ridp,fn,ridv,sz,fnm,ridm,fnr,nc,msg)"
1301 "VALUES(%Q,%Q,%d,%Q,%d,%d,%Q,%d,%Q,%d,%Q)",
 
1302 /* op */ zType,
1303 /* fnp */ zFnp,
1304 /* ridp */ ridp,
1305 /* fn */ zName,
1306 /* ridv */ chnged==0 ? ridv : 0,
1307 /* sz */ chnged!=0 ? sz : 0,
1308 /* fnm */ zFnm,
1309 /* ridm */ ridm,
1310 /* fnr */ zName,
1311 /* nc */ nc,
1312 /* msg */ zErrMsg
1313 );
1314 db_multi_exec("%s", blob_sql_text(&sql));
1315 blob_reset(&sql);
1316 fossil_free(zFullPath);
1317 blob_reset(&p);
1318 blob_reset(&m);
1319 blob_reset(&r);
1320 }
1321

Keyboard Shortcuts

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