Skip to content

Commit 40c92ff

Browse files
phillipwoodgitster
authored andcommitted
xdiff: reduce the size of array
When the myers algorithm is selected the input files are pre-processed to remove any common prefix and suffix and any lines that appear in only one file. This requires a map to be created between the lines that are processed by the myers algorithm and the lines in the original file. That map does not include the common lines at the beginning and end of the files but the array is allocated to be the size of the whole file. Move the allocation into xdl_cleanup_records() where the map is populated and we know how big it needs to be. Signed-off-by: Phillip Wood <phillip.wood@dunelm.org.uk> Signed-off-by: Junio C Hamano <gitster@pobox.com>
1 parent 8c9d203 commit 40c92ff

1 file changed

Lines changed: 4 additions & 7 deletions

File tree

xdiff/xprepare.c

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -171,12 +171,6 @@ static int xdl_prepare_ctx(unsigned int pass, mmfile_t *mf, long narec, xpparam_
171171
if (!XDL_CALLOC_ARRAY(xdf->changed, xdf->nrec + 2))
172172
goto abort;
173173

174-
if ((XDF_DIFF_ALG(xpp->flags) != XDF_PATIENCE_DIFF) &&
175-
(XDF_DIFF_ALG(xpp->flags) != XDF_HISTOGRAM_DIFF)) {
176-
if (!XDL_ALLOC_ARRAY(xdf->reference_index, xdf->nrec + 1))
177-
goto abort;
178-
}
179-
180174
xdf->changed += 1;
181175
xdf->nreff = 0;
182176
xdf->dstart = 0;
@@ -283,7 +277,10 @@ static int xdl_cleanup_records(xdlclassifier_t *cf, xdfile_t *xdf1, xdfile_t *xd
283277
* changed[i] should remain false, or become true.
284278
*/
285279
if (!XDL_CALLOC_ARRAY(action1, len1) ||
286-
!XDL_CALLOC_ARRAY(action2, len2)) {
280+
!XDL_CALLOC_ARRAY(action2, len2) ||
281+
!XDL_ALLOC_ARRAY(xdf1->reference_index, len1) ||
282+
!XDL_ALLOC_ARRAY(xdf2->reference_index, len2))
283+
{
287284
ret = -1;
288285
goto cleanup;
289286
}

0 commit comments

Comments
 (0)