From e94f080dd0e19266003da01583222784c9169fc2 Mon Sep 17 00:00:00 2001 From: George Hazan Date: Wed, 18 Jul 2018 13:21:23 +0300 Subject: Weather: - persistent connection removed due to memory corruption problems; - warning fixed; - version bump --- plugins/Weather/src/stdafx.h | 2 -- plugins/Weather/src/version.h | 2 +- plugins/Weather/src/weather.cpp | 3 --- plugins/Weather/src/weather_addstn.cpp | 5 +---- plugins/Weather/src/weather_contacts.cpp | 3 +-- plugins/Weather/src/weather_conv.cpp | 14 ++++++-------- plugins/Weather/src/weather_http.cpp | 14 -------------- plugins/Weather/src/weather_update.cpp | 2 -- plugins/Weather/src/weather_userinfo.cpp | 2 +- 9 files changed, 10 insertions(+), 37 deletions(-) (limited to 'plugins/Weather/src') diff --git a/plugins/Weather/src/stdafx.h b/plugins/Weather/src/stdafx.h index a33b89e6d3..74cecbed62 100644 --- a/plugins/Weather/src/stdafx.h +++ b/plugins/Weather/src/stdafx.h @@ -359,7 +359,6 @@ extern unsigned status, old_status; extern MWindowList hDataWindowList, hWindowList; extern HNETLIBUSER hNetlibUser; -extern HNETLIBCONN hNetlibHttp; extern HANDLE hHookWeatherUpdated, hHookWeatherError, hTBButton, hUpdateMutex; extern UINT_PTR timerId; @@ -435,7 +434,6 @@ void DBDataManage(MCONTACT hContact, WORD Mode, WPARAM wParam, LPARAM lParam); // functions in weather_http.c int InternetDownloadFile (char *szUrl, char *cookie, char *userAgent, wchar_t** szData); void NetlibInit(); -void NetlibHttpDisconnect(void); // functions in weather_ini.c WIDATA* GetWIData(wchar_t *pszServ); diff --git a/plugins/Weather/src/version.h b/plugins/Weather/src/version.h index 6c6e8e3b7d..6985233d72 100644 --- a/plugins/Weather/src/version.h +++ b/plugins/Weather/src/version.h @@ -1,7 +1,7 @@ #define __MAJOR_VERSION 0 #define __MINOR_VERSION 4 #define __RELEASE_NUM 0 -#define __BUILD_NUM 3 +#define __BUILD_NUM 4 #include diff --git a/plugins/Weather/src/weather.cpp b/plugins/Weather/src/weather.cpp index 2471557fcb..5ecdb7f4a5 100644 --- a/plugins/Weather/src/weather.cpp +++ b/plugins/Weather/src/weather.cpp @@ -95,8 +95,6 @@ int WeatherShutdown(WPARAM, LPARAM) SaveOptions(); // save options once more status = ID_STATUS_OFFLINE; // set status to offline - Netlib_Shutdown(hNetlibHttp); - WindowList_Broadcast(hWindowList, WM_CLOSE, 0, 0); WindowList_Broadcast(hDataWindowList, WM_CLOSE, 0, 0); SendMessage(hWndSetup, WM_CLOSE, 0, 0); @@ -219,7 +217,6 @@ int CMPlugin::Unload() DestroyHookableEvent(hHookWeatherUpdated); DestroyHookableEvent(hHookWeatherError); - NetlibHttpDisconnect(); Netlib_CloseHandle(hNetlibUser); DestroyUpdateList(); diff --git a/plugins/Weather/src/weather_addstn.cpp b/plugins/Weather/src/weather_addstn.cpp index e683f561ac..fdc28202b9 100644 --- a/plugins/Weather/src/weather_addstn.cpp +++ b/plugins/Weather/src/weather_addstn.cpp @@ -280,7 +280,6 @@ int IDSearch(wchar_t *sID, const int searchId) IDSearchProc(sID, searchId, &Item->Data.IDSearch, Item->Data.InternalName, Item->Data.DisplayName); Item = Item->next; } - NetlibHttpDisconnect(); } // if the station ID is #, return a dummy result and quit the funciton else { @@ -411,16 +410,14 @@ int NameSearchProc(wchar_t *name, const int searchId, WINAMESEARCH *sData, wchar // return 0 if no error int NameSearch(wchar_t *name, const int searchId) { - WIDATALIST *Item = WIHead; - // search every weather service using the search station name + WIDATALIST *Item = WIHead; while (Item != nullptr) { if (Item->Data.NameSearch.Single.Available || Item->Data.NameSearch.Multiple.Available) NameSearchProc(name, searchId, &Item->Data.NameSearch, Item->Data.InternalName, Item->Data.DisplayName); Item = Item->next; } - NetlibHttpDisconnect(); return 0; } diff --git a/plugins/Weather/src/weather_contacts.cpp b/plugins/Weather/src/weather_contacts.cpp index c770ebd5d0..5fdb1d097d 100644 --- a/plugins/Weather/src/weather_contacts.cpp +++ b/plugins/Weather/src/weather_contacts.cpp @@ -247,9 +247,8 @@ static INT_PTR CALLBACK DlgProcChange(HWND hwndDlg, UINT msg, WPARAM wParam, LPA } // free memory mir_free(pData); - - NetlibHttpDisconnect(); } + // give no station name but only ID if the search is unavailable if (str[0] != 0) SetDlgItemText(hwndDlg, IDC_NAME, str); diff --git a/plugins/Weather/src/weather_conv.cpp b/plugins/Weather/src/weather_conv.cpp index 88822b98bc..c58751a072 100644 --- a/plugins/Weather/src/weather_conv.cpp +++ b/plugins/Weather/src/weather_conv.cpp @@ -407,17 +407,15 @@ WORD GetIcon(const wchar_t* cond, WIDATA *Data) // this function convert the string to the format with 1 upper case followed by lower case char void CaseConv(wchar_t *str) { - BOOL nextUp = TRUE; + bool nextUp = true; - CharLowerBuff(str, (DWORD)mir_wstrlen(str)); + CharLowerBuffW(str, (DWORD)mir_wstrlen(str)); for (wchar_t *pstr = str; *pstr; pstr++) { if (*pstr == ' ' || *pstr == '-') - nextUp = TRUE; - else { - wchar_t ch = *pstr; - if (nextUp) - *pstr = (wchar_t)CharUpper((LPTSTR)ch); - nextUp = FALSE; + nextUp = true; + else if (nextUp) { + CharUpperBuffW(pstr, 1); + nextUp = false; } } } diff --git a/plugins/Weather/src/weather_http.cpp b/plugins/Weather/src/weather_http.cpp index 63ea78b03a..10bcf63690 100644 --- a/plugins/Weather/src/weather_http.cpp +++ b/plugins/Weather/src/weather_http.cpp @@ -26,7 +26,6 @@ from the web using netlib #include "stdafx.h" HNETLIBUSER hNetlibUser; -HNETLIBCONN hNetlibHttp; static int findHeader(const NETLIBHTTPREQUEST *nlhrReply, const char *hdr) { @@ -67,7 +66,6 @@ int InternetDownloadFile(char *szUrl, char *cookie, char *userAgent, wchar_t **s nlhr.requestType = REQUEST_GET; nlhr.flags = NLHRF_DUMPASTEXT | NLHRF_HTTP11 | NLHRF_PERSISTENT | NLHRF_REDIRECT; nlhr.szUrl = szUrl; - nlhr.nlc = hNetlibHttp; nlhr.headers = headers; nlhr.headersCount = _countof(headers); @@ -81,7 +79,6 @@ int InternetDownloadFile(char *szUrl, char *cookie, char *userAgent, wchar_t **s *szData = (wchar_t*)mir_alloc(512); // store the error code in szData mir_wstrcpy(*szData, L"NetLib error occurred!!"); - hNetlibHttp = nullptr; return NLHRF_REDIRECT; } @@ -142,7 +139,6 @@ int InternetDownloadFile(char *szUrl, char *cookie, char *userAgent, wchar_t **s result = nlhrReply->resultCode; } - hNetlibHttp = nlhrReply->nlc; // make a copy of the retrieved data, then free the memory of the http reply Netlib_FreeHttpRequest(nlhrReply); return result; @@ -159,13 +155,3 @@ void NetlibInit(void) nlu.szDescriptiveName.w = TranslateT("Weather HTTP connections"); hNetlibUser = Netlib_RegisterUser(&nlu); } - -void NetlibHttpDisconnect(void) -{ - if (hNetlibHttp) { - HANDLE hConn = hNetlibHttp; - hNetlibHttp = nullptr; - Netlib_CloseHandle(hConn); - } -} - diff --git a/plugins/Weather/src/weather_update.cpp b/plugins/Weather/src/weather_update.cpp index d5540d041c..3b616388f2 100644 --- a/plugins/Weather/src/weather_update.cpp +++ b/plugins/Weather/src/weather_update.cpp @@ -293,8 +293,6 @@ static void UpdateThreadProc(void *) while (UpdateListHead != nullptr && !Miranda_IsTerminated()) UpdateWeather(UpdateGetFirst()); - NetlibHttpDisconnect(); - // exit the update thread ThreadRunning = FALSE; } diff --git a/plugins/Weather/src/weather_userinfo.cpp b/plugins/Weather/src/weather_userinfo.cpp index b535e6cfa8..90d3b8d4ae 100644 --- a/plugins/Weather/src/weather_userinfo.cpp +++ b/plugins/Weather/src/weather_userinfo.cpp @@ -210,7 +210,7 @@ static INT_PTR CALLBACK DlgProcMoreData(HWND hwndDlg, UINT msg, WPARAM wParam, L case WM_LBUTTONUP: TEXTRANGE tr; tr.chrg = enlink->chrg; - tr.lpstrText = (LPTSTR)mir_alloc(sizeof(wchar_t)*(tr.chrg.cpMax - tr.chrg.cpMin + 8)); + tr.lpstrText = (wchar_t*)mir_alloc(sizeof(wchar_t)*(tr.chrg.cpMax - tr.chrg.cpMin + 8)); SendMessage(pNmhdr->hwndFrom, EM_GETTEXTRANGE, 0, (LPARAM)&tr); Utils_OpenUrlW(tr.lpstrText); mir_free(tr.lpstrText); -- cgit v1.2.3