Skip to content

includes: define cleanup functions for the use with __attribute__((cleanup))

Daiki Ueno requested to merge dueno/gnutls:wip/dueno/pointer-cleanup into master

This introduces GNUTLS_DEFINE_POINTER_CLEANUP_FUNC macro to define wrapper functions around gnutls_*_deinit, to be used with the cleanup attribute supported by modern C compilers.

That enables automatic cleanup of resources inside a function; applications could initialize pointers like the following:

  __attribute__((cleanup(gnutls_deinitp)))
    gnutls_session_t session = NULL;

  if (err)
    return err;

Then gnutls_deinit is automatically called on session when the function returns error.

Checklist

  • Commits have Signed-off-by: with name/author being identical to the commit author
  • Code modified for feature
  • Test suite updated with functionality tests
  • Test suite updated with negative tests
  • Documentation updated / NEWS entry present (for non-trivial changes)
  • CI timeout is 2h or higher (see Settings/CICD/General pipelines/Timeout)

Reviewer's checklist:

  • Any issues marked for closing are addressed
  • There is a test suite reasonably covering new functionality or modifications
  • Function naming, parameters, return values, types, etc., are consistent and according to CONTRIBUTION.md
  • This feature/change has adequate documentation added
  • No obvious mistakes in the code
Edited by Daiki Ueno

Merge request reports