Fossil SCM

Reduced memory requirements in merge_try_to_resolve_conflict().

drh 2024-12-05 13:24 better-merge
Commit 16515616307feec9fa23f566109456dd0792bb8f05158ad0992ba5e4f4539abf
1 file changed +2 -6
+2 -6
--- src/merge3.c
+++ src/merge3.c
@@ -338,21 +338,17 @@
338338
mergebuilder_init_token(&mb);
339339
blob_extract_lines(pMB->pPivot, nPivot, &pv);
340340
blob_extract_lines(pMB->pV1, nV1, &v1);
341341
blob_extract_lines(pMB->pV2, nV2, &v2);
342342
blob_zero(pOut);
343
- blob_materialize(&pv);
344
- blob_materialize(&v1);
345
- blob_materialize(&v2);
346343
mb.pPivot = &pv;
347344
mb.pV1 = &v1;
348345
mb.pV2 = &v2;
349346
mb.pOut = pOut;
350347
nConflict = merge_three_blobs(&mb);
351
- blob_reset(&pv);
352
- blob_reset(&v1);
353
- blob_reset(&v2);
348
+ /* The pv, v1, and v2 blobs are all ephemeral and hence do not need
349
+ ** to be freed. */
354350
/* mb has not allocated any resources, so we do not need to invoke
355351
** the xDestroy method. */
356352
blob_add_final_newline(pOut);
357353
return nConflict;
358354
}
359355
--- src/merge3.c
+++ src/merge3.c
@@ -338,21 +338,17 @@
338 mergebuilder_init_token(&mb);
339 blob_extract_lines(pMB->pPivot, nPivot, &pv);
340 blob_extract_lines(pMB->pV1, nV1, &v1);
341 blob_extract_lines(pMB->pV2, nV2, &v2);
342 blob_zero(pOut);
343 blob_materialize(&pv);
344 blob_materialize(&v1);
345 blob_materialize(&v2);
346 mb.pPivot = &pv;
347 mb.pV1 = &v1;
348 mb.pV2 = &v2;
349 mb.pOut = pOut;
350 nConflict = merge_three_blobs(&mb);
351 blob_reset(&pv);
352 blob_reset(&v1);
353 blob_reset(&v2);
354 /* mb has not allocated any resources, so we do not need to invoke
355 ** the xDestroy method. */
356 blob_add_final_newline(pOut);
357 return nConflict;
358 }
359
--- src/merge3.c
+++ src/merge3.c
@@ -338,21 +338,17 @@
338 mergebuilder_init_token(&mb);
339 blob_extract_lines(pMB->pPivot, nPivot, &pv);
340 blob_extract_lines(pMB->pV1, nV1, &v1);
341 blob_extract_lines(pMB->pV2, nV2, &v2);
342 blob_zero(pOut);
 
 
 
343 mb.pPivot = &pv;
344 mb.pV1 = &v1;
345 mb.pV2 = &v2;
346 mb.pOut = pOut;
347 nConflict = merge_three_blobs(&mb);
348 /* The pv, v1, and v2 blobs are all ephemeral and hence do not need
349 ** to be freed. */
 
350 /* mb has not allocated any resources, so we do not need to invoke
351 ** the xDestroy method. */
352 blob_add_final_newline(pOut);
353 return nConflict;
354 }
355

Keyboard Shortcuts

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