From ebabd34385feb629b759216c1f7d85edc20bf2fd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?John=20Ankarstr=C3=B6m?= Date: Sat, 30 Jul 2022 03:14:13 +0200 Subject: Add wstring_owner, replacing std::wstring. std::basic_string is nice, but it is not very ergonomic if everything you really need is to automatically free C strings at end of scope. I suppose I could have used std::unique_ptr for this, but I suspect the ergonomics would be worse. --- c/episodelistview.cpp | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) (limited to 'c/episodelistview.cpp') diff --git a/c/episodelistview.cpp b/c/episodelistview.cpp index b3ee02f..132941c 100644 --- a/c/episodelistview.cpp +++ b/c/episodelistview.cpp @@ -272,16 +272,16 @@ int CALLBACK EpisodeListView::SortProc(const LPARAM iItem1, const LPARAM iItem2, case ELVSITITLE: { Mark m; - std::wstring ws1, ws2; + wstring_owner wso1, wso2; int cch, cch1, cch2; - if (!Pl("episode_data","episode_title",lvi1.lParam,&ws1)) + if (!Pl("episode_data","episode_title",lvi1.lParam,&wso1)) return 0; - if (!Pl("episode_data","episode_title",lvi2.lParam,&ws2)) + if (!Pl("episode_data","episode_title",lvi2.lParam,&wso2)) return 0; - cch1 = wcslen(ws1.c_str()); - cch2 = wcslen(ws2.c_str()); + cch1 = wcslen(wso1.p); + cch2 = wcslen(wso2.p); cch = cch1 > cch2? cch2: cch1; - return iOrder*_wcsnicmp(ws1.c_str(), ws2.c_str(), cch); + return iOrder*_wcsnicmp(wso1.p, wso2.p, cch); } default: return 0; @@ -412,12 +412,12 @@ void EpisodeListView::Update() /* Update episode name and rating. */ void EpisodeListView::UpdateItem(const LVITEM* const pLvi) { - std::wstring wsName; - if (!Pl("episode_data","episode_title",pLvi->lParam,&wsName)) { + wstring_owner wsoName; + if (!Pl("episode_data","episode_title",pLvi->lParam,&wsoName)) { if (!Pl("episode_data","update_episode_data")) goto r; - if (!Pl("episode_data","episode_title",pLvi->lParam,&wsName)) goto r; + if (!Pl("episode_data","episode_title",pLvi->lParam,&wsoName)) goto r; } - ListView_SetItemText(hWnd, pLvi->iItem, ELVSITITLE, wsName.data()); + ListView_SetItemText(hWnd, pLvi->iItem, ELVSITITLE, wsoName.p); r: int iRating; if (!Pl("episode_data","episode_rating",pLvi->lParam,&iRating)) { -- cgit v1.2.3