From 47d490e78107a5209c1f4f5e4afca7379d42c152 Mon Sep 17 00:00:00 2001 From: наб Date: Tue, 12 Nov 2024 14:44:32 +0100 Subject: DEFER --- apt-pkg/deb/dpkgpm.cc | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) (limited to 'apt-pkg') diff --git a/apt-pkg/deb/dpkgpm.cc b/apt-pkg/deb/dpkgpm.cc index 03221ce32..273b6d845 100644 --- a/apt-pkg/deb/dpkgpm.cc +++ b/apt-pkg/deb/dpkgpm.cc @@ -2250,6 +2250,8 @@ struct AptScopeWrapper { }; template AptScopeWrapper(F) -> AptScopeWrapper; +#define PASTE(a, b) a##b +#define DEFER(lambda) AptScopeWrapper PASTE(defer, __LINE__){lambda}; static void CopyIndented(const char *header, FILE *from, FILE *to) { @@ -2259,7 +2261,7 @@ static void CopyIndented(const char *header, FILE *from, FILE *to) fputs(header, to); char *line{}; size_t linelen; - AptScopeWrapper line_deleter{[&] { free(line); }}; + DEFER([&] { free(line); }); while (getline(&line, &linelen, from) != -1) fprintf(to, " %s", line); } @@ -2393,10 +2395,10 @@ void pkgDPkgPM::WriteApportReport(const char *pkgpath, const char *errormsg) char *line{}; size_t linelen; - AptScopeWrapper line_deleter{[&] { free(line); }}; + DEFER([&] { free(line); }); // check if the existing report is the same version report = fopen(reportfile.c_str(),"r"); - AptScopeWrapper report_deleter{[&] { fclose(report); }}; + DEFER([&] { fclose(report); }); while(getline(&line, &linelen, report) != -1) { char pkgname[255], version[255]; @@ -2411,7 +2413,7 @@ void pkgDPkgPM::WriteApportReport(const char *pkgpath, const char *errormsg) report = fopen(reportfile.c_str(),"w"); if(report == NULL) return; - AptScopeWrapper report_deleter{[&] { fclose(report); }}; + DEFER([&] { fclose(report); }); if(_config->FindB("DPkgPM::InitialReportOnly",false) == true) chmod(reportfile.c_str(), 0); else -- cgit v1.2.3-70-g09d2