commit - 8cba9b5e693b0da4da8e2f83b51ab6ad42430851
commit + dabc100859385b31dcfbe62d04187d6947a12795
blob - 9f5f1eb495d016441ffc8a94e8401c15f8a67df9
blob + bb6e626bf9c86e3fa8598f4710496f81737f2c17
--- include/diff/arraylist.h
+++ include/diff/arraylist.h
#define ARRAYLIST_INSERT(NEW_ITEM_P, ARRAY_LIST, AT_IDX) do { \
ARRAYLIST_ADD(NEW_ITEM_P, ARRAY_LIST); \
- if ((AT_IDX) < (ARRAY_LIST).len) \
+ if ((NEW_ITEM_P) && (AT_IDX) < (ARRAY_LIST).len) \
memmove(&(ARRAY_LIST).head[(AT_IDX) + 1], \
&(ARRAY_LIST).head[AT_IDX], \
((ARRAY_LIST).len - (AT_IDX)) \
blob - ef073fa60e05e919ff3a03ae8837019c276589fe
blob + 90ed1983d9b6b7ad3005b3a3b77230d52c12ba2d
--- lib/diff_output.c
+++ lib/diff_output.c
outlen += rc;
if (outinfo) {
ARRAYLIST_ADD(offp, outinfo->line_offsets);
+ if (offp == NULL)
+ return ENOMEM;
outoff += outlen;
*offp = outoff;
}
if (output_info != NULL) {
ARRAYLIST_INIT(output_info->line_offsets, 128);
ARRAYLIST_ADD(offp, output_info->line_offsets);
+ if (offp == NULL) {
+ diff_output_info_free(output_info);
+ return NULL;
+ }
*offp = 0;
}
return output_info;
blob - 0d570314af3d662046e4e1266c1bd783c95848a6
blob + 7d291c0f3ff566488d546354867dd8406c5f0291
--- lib/diff_output_unidiff.c
+++ lib/diff_output_unidiff.c
return errno;
if (outinfo) {
ARRAYLIST_ADD(offp, outinfo->line_offsets);
+ if (offp == NULL)
+ return ENOMEM;
outoff += rc;
*offp = outoff;
return errno;
if (outinfo) {
ARRAYLIST_ADD(offp, outinfo->line_offsets);
+ if (offp == NULL)
+ return ENOMEM;
outoff += rc;
*offp = outoff;
return errno;
if (outinfo) {
ARRAYLIST_ADD(offp, outinfo->line_offsets);
+ if (offp == NULL)
+ return ENOMEM;
outoff += rc;
*offp = outoff;