[PATCH v2 0/3] diff: build parseopts array on demand

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Calling repo_init_revisions() and release_revisions() in that order
leaks the memory allocated for the parseopts array in the embedded
struct diff_options member.  Get rid of that leak by reducing the
lifetime of that array.

Original patch:
https://lore.kernel.org/git/4fd82dc6-e0f8-0638-5b10-16bfef39a171@xxxxxx/

Submitted separately from that thread because it's independent enough.

Change since v1:
- Actually remove the parseopts member.  Its removal got lost during
  refactoring in v1.  Thank you for spotting that, Junio!

  diff: factor out add_diff_options()
  diff: let prep_parse_options() return parseopt array
  diff: remove parseopts member from struct diff_options

 builtin/range-diff.c |  2 +-
 diff-no-index.c      |  3 +--
 diff.c               | 26 +++++++++++++++-----------
 diff.h               |  2 +-
 4 files changed, 18 insertions(+), 15 deletions(-)

Range-Diff gegen v1:
1:  630f95320f = 1:  4dc8b2632b diff: factor out add_diff_options()
2:  4b56fa795c = 2:  10903d355e diff: let prep_parse_options() return parseopt array
3:  7e54e4370a ! 3:  24bd18ae79 diff: remove parseopts member from struct diff_options
    @@ diff.c: void diff_free(struct diff_options *options)
      }

      void diff_flush(struct diff_options *options)
    +
    + ## diff.h ##
    +@@ diff.h: struct diff_options {
    + 	unsigned color_moved_ws_handling;
    +
    + 	struct repository *repo;
    +-	struct option *parseopts;
    + 	struct strmap *additional_path_headers;
    +
    + 	int no_free;
--
2.38.1




[Index of Archives]     [Linux Kernel Development]     [Gcc Help]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [V4L]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Fedora Users]

  Powered by Linux