From 871a6e72e1dc6cf78560565a227a1a5a8fafe66efb89a0f31db2a2e7a16297e2 Mon Sep 17 00:00:00 2001 From: ADAM David Alan Martin Date: Mon, 18 Aug 2025 03:10:56 -0400 Subject: [PATCH] Another RAII member. --- src/cache.cc | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/src/cache.cc b/src/cache.cc index 1e81923..328b733 100644 --- a/src/cache.cc +++ b/src/cache.cc @@ -51,7 +51,7 @@ struct CacheEntry_t ~CacheEntry_t(); std::unique_ptr< const DilloUrl > Url; /**< Cached Url. Url is used as a primary Key */ - char *TypeDet; /**< MIME type string (detected from data) */ + std::string TypeDet; /**< MIME type string (detected from data) */ char *TypeHdr; /**< MIME type string as from the HTTP Header */ char *TypeMeta; /**< MIME type string from META HTTP-EQUIV */ char *TypeNorm; /**< MIME type string normalized */ @@ -194,7 +194,6 @@ static void Cache_client_dequeue(CacheClient_t *Client) static void Cache_entry_init(CacheEntry_t *NewEntry, const DilloUrl *Url) { NewEntry->Url = a_Url_dup(Url); - NewEntry->TypeDet = NULL; NewEntry->TypeHdr = NULL; NewEntry->TypeMeta = NULL; NewEntry->TypeNorm = NULL; @@ -299,7 +298,6 @@ static void Cache_auth_free(Dlist *auth) CacheEntry_t::~CacheEntry_t() { auto *const entry= this; - dFree(entry->TypeDet); dFree(entry->TypeHdr); dFree(entry->TypeMeta); dFree(entry->TypeNorm); @@ -459,8 +457,13 @@ static void Cache_unref_data(CacheEntry_t *entry) */ static const char *Cache_current_content_type(CacheEntry_t *entry) { - return entry->TypeNorm ? entry->TypeNorm : entry->TypeMeta ? entry->TypeMeta - : entry->TypeHdr ? entry->TypeHdr : entry->TypeDet; + return entry->TypeNorm + ? entry->TypeNorm + : entry->TypeMeta + ? entry->TypeMeta + : entry->TypeHdr + ? entry->TypeHdr + : entry->TypeDet.c_str(); } /** @@ -516,7 +519,7 @@ const char *a_Cache_set_content_type(const DilloUrl *url, const char *ctype, if (*from == 'm' && charset && ((!major || !*major) && (!minor || !*minor))) { /* META only gives charset; use detected MIME type too */ - entry->TypeNorm = dStrconcat(entry->TypeDet, ctype, NULL); + entry->TypeNorm = dStrconcat(entry->TypeDet.c_str(), ctype, NULL); } else if (*from == 'm' && !dStrnAsciiCasecmp(ctype, "text/xhtml", 10)) { /* WORKAROUND: doxygen uses "text/xhtml" in META */