Fixed some memory leaks.
This commit is contained in:
parent
9ff0025e52
commit
ffcc586cd5
@ -462,8 +462,10 @@ void CmfMsgs(GMsg* msg, bool torecycle)
|
|||||||
|
|
||||||
AL.SetActiveAreaId(OrigArea);
|
AL.SetActiveAreaId(OrigArea);
|
||||||
AreaData* orig_adat = AA->adat;
|
AreaData* orig_adat = AA->adat;
|
||||||
AA->adat = (AreaData*)throw_calloc(1, sizeof(AreaData));
|
// AA->adat = (AreaData*)throw_calloc(1, sizeof(AreaData));
|
||||||
memcpy(AA->adat, orig_adat, sizeof(AreaData));
|
// memcpy(AA->adat, orig_adat, sizeof(AreaData));
|
||||||
|
AA->adat = new AreaData;
|
||||||
|
*AA->adat = *orig_adat;
|
||||||
AL.SetActiveAreaId(destarea);
|
AL.SetActiveAreaId(destarea);
|
||||||
Area* AAdest = AA;
|
Area* AAdest = AA;
|
||||||
|
|
||||||
@ -473,9 +475,11 @@ void CmfMsgs(GMsg* msg, bool torecycle)
|
|||||||
// Is it readonly?
|
// Is it readonly?
|
||||||
if(AA->attr().r_o()) {
|
if(AA->attr().r_o()) {
|
||||||
GMenuReadonly MenuReadonly;
|
GMenuReadonly MenuReadonly;
|
||||||
if(not MenuReadonly.Run()) {
|
if(not MenuReadonly.Run())
|
||||||
|
{
|
||||||
AL.SetActiveAreaId(OrigArea);
|
AL.SetActiveAreaId(OrigArea);
|
||||||
throw_free(AA->adat);
|
// throw_free(AA->adat);
|
||||||
|
delete AA->adat;
|
||||||
AA->adat = orig_adat;
|
AA->adat = orig_adat;
|
||||||
GFTRK(0);
|
GFTRK(0);
|
||||||
return;
|
return;
|
||||||
@ -681,7 +685,8 @@ void CmfMsgs(GMsg* msg, bool torecycle)
|
|||||||
|
|
||||||
// Return to original area and unlock it
|
// Return to original area and unlock it
|
||||||
AL.SetActiveAreaId(OrigArea);
|
AL.SetActiveAreaId(OrigArea);
|
||||||
throw_free(AA->adat);
|
// throw_free(AA->adat);
|
||||||
|
delete AA->adat;
|
||||||
AA->adat = orig_adat;
|
AA->adat = orig_adat;
|
||||||
AA->Unlock();
|
AA->Unlock();
|
||||||
|
|
||||||
|
@ -29,7 +29,9 @@
|
|||||||
|
|
||||||
// ------------------------------------------------------------------
|
// ------------------------------------------------------------------
|
||||||
|
|
||||||
void ResetMsg(GMsg* msg) {
|
void ResetMsg(GMsg* msg)
|
||||||
|
{
|
||||||
|
msg->link.reset();
|
||||||
|
|
||||||
throw_xfree(msg->references);
|
throw_xfree(msg->references);
|
||||||
throw_xfree(msg->inreplyto);
|
throw_xfree(msg->inreplyto);
|
||||||
|
@ -236,8 +236,10 @@ void Area::InitData() {
|
|||||||
|
|
||||||
void Area::RandomizeData(int mode) {
|
void Area::RandomizeData(int mode) {
|
||||||
|
|
||||||
if(not adat) {
|
if(not adat)
|
||||||
adat = (AreaData*)throw_calloc(1, sizeof(AreaData));
|
{
|
||||||
|
// adat = (AreaData*)throw_calloc(1, sizeof(AreaData));
|
||||||
|
adat = new AreaData;
|
||||||
InitData();
|
InitData();
|
||||||
}
|
}
|
||||||
else { // reset to global defaults
|
else { // reset to global defaults
|
||||||
|
@ -197,8 +197,10 @@ void RenumberArea() {
|
|||||||
|
|
||||||
void Area::Open() {
|
void Area::Open() {
|
||||||
|
|
||||||
if(not adat) {
|
if(not adat)
|
||||||
adat = (AreaData*)throw_calloc(1, sizeof(AreaData));
|
{
|
||||||
|
// adat = (AreaData*)throw_calloc(1, sizeof(AreaData));
|
||||||
|
adat = new AreaData;
|
||||||
InitData();
|
InitData();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -228,7 +230,9 @@ void Area::Close() {
|
|||||||
|
|
||||||
UpdateAreadata();
|
UpdateAreadata();
|
||||||
|
|
||||||
throw_release(adat);
|
// throw_release(adat);
|
||||||
|
delete adat;
|
||||||
|
adat = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -260,7 +260,85 @@ int AreaCmp(const Area** __a, const Area** __b);
|
|||||||
// ------------------------------------------------------------------
|
// ------------------------------------------------------------------
|
||||||
// Area data (collected from global/Random System)
|
// Area data (collected from global/Random System)
|
||||||
|
|
||||||
struct AreaData {
|
struct AreaData
|
||||||
|
{
|
||||||
|
AreaData()
|
||||||
|
{
|
||||||
|
akamatching = false;
|
||||||
|
areacopyaddid = false;
|
||||||
|
areacopydirect = false;
|
||||||
|
areaforwarddirect = false;
|
||||||
|
areafreqdirect = false;
|
||||||
|
areareplydirect = false;
|
||||||
|
dispsoftcr = false;
|
||||||
|
edithardterm = false;
|
||||||
|
editmixcase = false;
|
||||||
|
forcetemplate = false;
|
||||||
|
hidestylies = false;
|
||||||
|
usestylies = false;
|
||||||
|
internetmsgid = false;
|
||||||
|
msglistfast = false;
|
||||||
|
msglistfirst = false;
|
||||||
|
msglistheader = false;
|
||||||
|
msglistwidesubj = false;
|
||||||
|
quotewraphard = false;
|
||||||
|
taglinesupport = false;
|
||||||
|
templatematch = false;
|
||||||
|
usearea = false;
|
||||||
|
usesoftcrxlat = false;
|
||||||
|
usetzutc = false;
|
||||||
|
inittwit = false;
|
||||||
|
viewhidden = false;
|
||||||
|
viewkludge = false;
|
||||||
|
viewquote = false;
|
||||||
|
striphtml = false;
|
||||||
|
|
||||||
|
ctrlinfo = 0;
|
||||||
|
internetrfcbody = 0;
|
||||||
|
msglistdate = 0;
|
||||||
|
quotectrl = 0;
|
||||||
|
replyre = 0;
|
||||||
|
usefwd = 0;
|
||||||
|
twitmode = 0;
|
||||||
|
writeheader = 0;
|
||||||
|
|
||||||
|
taglinechar = 0;
|
||||||
|
|
||||||
|
memset(origin, 0, sizeof(origin));
|
||||||
|
memset(quotechars, 0, sizeof(quotechars));
|
||||||
|
memset(quotestring, 0, sizeof(quotestring));
|
||||||
|
memset(quotestops, 0, sizeof(quotestops));
|
||||||
|
#if defined(GCFG_SPELL_INCLUDED)
|
||||||
|
memset(scheckerdeflang, 0, sizeof(scheckerdeflang));
|
||||||
|
#endif
|
||||||
|
memset(tagline, 0, sizeof(tagline));
|
||||||
|
memset(areacopyto, 0, sizeof(areacopyto));
|
||||||
|
memset(areafreqto, 0, sizeof(areafreqto));
|
||||||
|
memset(areareplyto, 0, sizeof(areareplyto));
|
||||||
|
memset(areayouwroteto, 0, sizeof(areayouwroteto));
|
||||||
|
memset(loadlanguage, 0, sizeof(loadlanguage));
|
||||||
|
memset(quotebuffile, 0, sizeof(quotebuffile));
|
||||||
|
memset(tpl, 0, sizeof(tpl));
|
||||||
|
memset(wtpl, 0, sizeof(wtpl));
|
||||||
|
memset(inputfile, 0, sizeof(inputfile));
|
||||||
|
memset(outputfile, 0, sizeof(outputfile));
|
||||||
|
memset(internetaddress, 0, sizeof(internetaddress));
|
||||||
|
memset(whoto, 0, sizeof(whoto));
|
||||||
|
memset(nickname, 0, sizeof(nickname));
|
||||||
|
memset(netname, 0, sizeof(netname));
|
||||||
|
memset(organization, 0, sizeof(organization));
|
||||||
|
memset(searchfor, 0, sizeof(searchfor));
|
||||||
|
memset(tearline, 0, sizeof(tearline));
|
||||||
|
memset(xlatexport, 0, sizeof(xlatexport));
|
||||||
|
memset(xlatimport, 0, sizeof(xlatimport));
|
||||||
|
|
||||||
|
//classes
|
||||||
|
memset(&aka, 0, sizeof(aka));
|
||||||
|
memset(&attributes, 0, sizeof(attributes));
|
||||||
|
memset(&internetgate, 0, sizeof(internetgate));
|
||||||
|
memset(&play, 0, sizeof(play));
|
||||||
|
memset(&username, 0, sizeof(username));
|
||||||
|
}
|
||||||
|
|
||||||
// Area
|
// Area
|
||||||
gaka aka;
|
gaka aka;
|
||||||
|
@ -31,7 +31,7 @@
|
|||||||
|
|
||||||
#if defined(__WIN32__)
|
#if defined(__WIN32__)
|
||||||
#include <windows.h>
|
#include <windows.h>
|
||||||
#if defined(_MSC_VER) && (_MSC_VER > 1200)
|
#if defined(_MSC_VER) && (_MSC_VER >= 1400)
|
||||||
#include <intrin.h>
|
#include <intrin.h>
|
||||||
#endif
|
#endif
|
||||||
#elif defined(__GNUC__)
|
#elif defined(__GNUC__)
|
||||||
@ -52,7 +52,7 @@
|
|||||||
|
|
||||||
// ------------------------------------------------------------------
|
// ------------------------------------------------------------------
|
||||||
|
|
||||||
#if defined(_MSC_VER) && (_MSC_VER <= 1200)
|
#if defined(_MSC_VER) && (_MSC_VER < 1400)
|
||||||
static void __cpuid(int CPUInfo[4], int cpuidfun)
|
static void __cpuid(int CPUInfo[4], int cpuidfun)
|
||||||
{
|
{
|
||||||
__asm
|
__asm
|
||||||
|
Reference in New Issue
Block a user