From 41f8db5f1aa22411abdcd27cf32d12f74b947570 Mon Sep 17 00:00:00 2001 From: "(no author)" <(no author)@4f64403b-2f21-0410-a795-97e2b3489a10> Date: Fri, 12 Nov 2010 12:58:34 +0000 Subject: Fixed memory leaks git-svn-id: https://server.scottellis.com.au/svn/mim_plugs@559 4f64403b-2f21-0410-a795-97e2b3489a10 --- updater/socket.cpp | 42 +++++++++++++++++------------------------- 1 file changed, 17 insertions(+), 25 deletions(-) (limited to 'updater/socket.cpp') diff --git a/updater/socket.cpp b/updater/socket.cpp index 0862ad8..52a82bd 100644 --- a/updater/socket.cpp +++ b/updater/socket.cpp @@ -281,39 +281,30 @@ char *UpdateRequired(UpdateInternal &update_internal, bool *beta) { // determine whether update is required - const char *ret = NULL; - char *ret_beta = NULL; + char *ret = NULL, *ret_beta = NULL; if (options.use_xml_backend && update_internal.file_id != -1) { - if( update_internal.cat == MC_UNKNOWN) + const char * res; + if (update_internal.cat == MC_UNKNOWN) { if (XMLDataAvailable(MC_PLUGINS) && - (ret = FindVersion(update_internal.file_id, update_internal.update.pbVersion, update_internal.update.cpbVersion, MC_PLUGINS))) + (res = FindVersion(update_internal.file_id, update_internal.update.pbVersion, update_internal.update.cpbVersion, MC_PLUGINS))) { update_internal.cat = MC_PLUGINS; - if(strcmp(ret, "same") == 0) - { - ret = 0; - } + if (strcmp(res, "same")) ret = _strdup(res); } else if (XMLDataAvailable(MC_LOCALIZATION) && - (ret = FindVersion(update_internal.file_id, update_internal.update.pbVersion, update_internal.update.cpbVersion, MC_LOCALIZATION))) + (res = FindVersion(update_internal.file_id, update_internal.update.pbVersion, update_internal.update.cpbVersion, MC_LOCALIZATION))) { update_internal.cat = MC_LOCALIZATION; - if (strcmp(ret, "same") == 0) - { - ret = 0; - } + if (strcmp(res, "same")) ret = _strdup(res); } } else { - ret = FindVersion(update_internal.file_id, update_internal.update.pbVersion, update_internal.update.cpbVersion, update_internal.cat); - if(ret && strcmp(ret, "same") == 0) - { - ret = 0; - } + res = FindVersion(update_internal.file_id, update_internal.update.pbVersion, update_internal.update.cpbVersion, update_internal.cat); + if (res && strcmp(res, "same")) ret = _strdup(res); } } else @@ -328,14 +319,14 @@ char *UpdateRequired(UpdateInternal &update_internal, bool *beta) update_internal.update.cpbBetaVersionPrefix, update_internal.update.pbVersion, update_internal.update.cpbVersion); } - if(ret && !ret_beta) + if (ret && !ret_beta) { if(beta) *beta = false; - return _strdup(ret); + return ret; } - else if(!ret && ret_beta) + else if (!ret && ret_beta) { - if(beta) *beta = true; + if (beta) *beta = true; return ret_beta; } else if (ret && ret_beta) @@ -348,14 +339,15 @@ char *UpdateRequired(UpdateInternal &update_internal, bool *beta) if (vRetBeta > vRet) { - if(beta) *beta = true; + free(ret); + if (beta) *beta = true; return ret_beta; } else { free(ret_beta); - if(beta) *beta = false; - return _strdup(ret); + if (beta) *beta = false; + return ret; } } -- cgit v1.2.3