commit 05b5f01fe731ec1197dbb90d6b0c98cd7dd3b465 from: Stefan Sperling date: Mon Sep 21 00:19:39 2020 UTC fix segfault which occurred with empty input files commit - 945524ed4b6d392d757bcb026f93717922e64a88 commit + 05b5f01fe731ec1197dbb90d6b0c98cd7dd3b465 blob - d2e422c8e42c1d2acba415753106bfc8ee1086a9 blob + e47921b35f615024740d645645eb9ebc74225ee1 --- lib/diff_main.c +++ lib/diff_main.c @@ -307,7 +307,23 @@ void diff_data_init_subsection(struct diff_data *d, struct diff_data *parent, struct diff_atom *from_atom, unsigned int atoms_count) { - struct diff_atom *last_atom = from_atom + atoms_count - 1; + struct diff_atom *last_atom; + + if (atoms_count == 0) { + *d = (struct diff_data){ + .f = NULL, + .pos = 0, + .data = "", + .len = 0, + .root = parent->root, + .atoms.head = NULL, + .atoms.len = atoms_count, + }; + + return; + } + + last_atom = from_atom + atoms_count - 1; *d = (struct diff_data){ .f = NULL, .pos = from_atom->pos, blob - /dev/null blob + e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 (mode 644) blob - /dev/null blob + f70f10e4db19068f79bc43844b49f3eece45c4e8 (mode 644) --- /dev/null +++ test/test014.right.txt @@ -0,0 +1 @@ +A blob - /dev/null blob + f70f10e4db19068f79bc43844b49f3eece45c4e8 (mode 644) --- /dev/null +++ test/test015.left.txt @@ -0,0 +1 @@ +A blob - /dev/null blob + e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 (mode 644)