]> git.ipfire.org Git - thirdparty/git.git/commitdiff
xdiff: reduce the size of array
authorPhillip Wood <phillip.wood@dunelm.org.uk>
Mon, 4 May 2026 14:06:21 +0000 (15:06 +0100)
committerJunio C Hamano <gitster@pobox.com>
Tue, 5 May 2026 07:20:06 +0000 (16:20 +0900)
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>
xdiff/xprepare.c

index 7a29e5fc4748e22957dd78af102b8c1f337cf1ee..11bada2608a7a4abf44d3f1393b6880d02eb185c 100644 (file)
@@ -171,12 +171,6 @@ static int xdl_prepare_ctx(unsigned int pass, mmfile_t *mf, long narec, xpparam_
        if (!XDL_CALLOC_ARRAY(xdf->changed, xdf->nrec + 2))
                goto abort;
 
-       if ((XDF_DIFF_ALG(xpp->flags) != XDF_PATIENCE_DIFF) &&
-           (XDF_DIFF_ALG(xpp->flags) != XDF_HISTOGRAM_DIFF)) {
-               if (!XDL_ALLOC_ARRAY(xdf->reference_index, xdf->nrec + 1))
-                       goto abort;
-       }
-
        xdf->changed += 1;
        xdf->nreff = 0;
        xdf->dstart = 0;
@@ -283,7 +277,10 @@ static int xdl_cleanup_records(xdlclassifier_t *cf, xdfile_t *xdf1, xdfile_t *xd
         * changed[i] should remain false, or become true.
         */
        if (!XDL_CALLOC_ARRAY(action1, len1) ||
-           !XDL_CALLOC_ARRAY(action2, len2)) {
+           !XDL_CALLOC_ARRAY(action2, len2) ||
+           !XDL_ALLOC_ARRAY(xdf1->reference_index, len1) ||
+           !XDL_ALLOC_ARRAY(xdf2->reference_index, len2))
+       {
                ret = -1;
                goto cleanup;
        }