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.
Commit
14959bc587effbd00d6550a408f8a56831a373d784d3e8f552fcf72a7d84b9f3
Parent
a69823c10beb39c…
1 file changed
+12
-7
+12
-7
| --- src/merge.c | ||
| +++ src/merge.c | ||
| @@ -1225,10 +1225,12 @@ | ||
| 1225 | 1225 | int isBinary = db_column_int(&q, 4); |
| 1226 | 1226 | const char *zName = db_column_text(&q, 5); |
| 1227 | 1227 | int isExe = db_column_int(&q, 6); |
| 1228 | 1228 | int islinkv = db_column_int(&q, 7); |
| 1229 | 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); | |
| 1230 | 1232 | int chnged = db_column_int(&q, 11); |
| 1231 | 1233 | int rc; |
| 1232 | 1234 | char *zFullPath; |
| 1233 | 1235 | const char *zType = "MERGE"; |
| 1234 | 1236 | Blob m, p, r; |
| @@ -1255,10 +1257,11 @@ | ||
| 1255 | 1257 | ); |
| 1256 | 1258 | }else{ |
| 1257 | 1259 | i64 sz; |
| 1258 | 1260 | const char *zErrMsg = 0; |
| 1259 | 1261 | int nc = 0; |
| 1262 | + Blob sql; | |
| 1260 | 1263 | |
| 1261 | 1264 | if( !dryRunFlag ) undo_save(zName); |
| 1262 | 1265 | zFullPath = mprintf("%s/%s", g.zLocalRoot, zName); |
| 1263 | 1266 | sz = file_size(zFullPath, ExtFILE); |
| 1264 | 1267 | content_get(ridp, &p); |
| @@ -1290,26 +1293,28 @@ | ||
| 1290 | 1293 | nConflict++; |
| 1291 | 1294 | nc = 1; |
| 1292 | 1295 | zErrMsg = "cannot merge binary file"; |
| 1293 | 1296 | zType = "ERROR"; |
| 1294 | 1297 | } |
| 1295 | - db_multi_exec( | |
| 1298 | + blob_init(&sql, 0, 0); | |
| 1299 | + blob_append_sql(&sql, | |
| 1296 | 1300 | "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)", | |
| 1299 | 1302 | /* op */ zType, |
| 1300 | - /* fnp */ db_column_text(&q, 9), | |
| 1303 | + /* fnp */ zFnp, | |
| 1301 | 1304 | /* ridp */ ridp, |
| 1302 | 1305 | /* 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, | |
| 1306 | 1309 | /* ridm */ ridm, |
| 1307 | 1310 | /* fnr */ zName, |
| 1308 | 1311 | /* nc */ nc, |
| 1309 | 1312 | /* msg */ zErrMsg |
| 1310 | 1313 | ); |
| 1314 | + db_multi_exec("%s", blob_sql_text(&sql)); | |
| 1315 | + blob_reset(&sql); | |
| 1311 | 1316 | fossil_free(zFullPath); |
| 1312 | 1317 | blob_reset(&p); |
| 1313 | 1318 | blob_reset(&m); |
| 1314 | 1319 | blob_reset(&r); |
| 1315 | 1320 | } |
| 1316 | 1321 |
| --- 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 |