Subject: Dynamic Menu Errors
From: James Montgomerie (jamie@montgomerie.net)
Date: Tue Apr 17 2001 - 12:46:57 CDT
The use of DELETEP with a cast inside it is causing problems in the
compilation of ev_Menu_Actions.cpp, line 138 ev_Menu_Labels.cpp, line
97 and ev_MenuLayouts.cpp, line 96.
Specifically, lines like:
DELETEP(static_cast<EV_Menu_Action *> (tmp));
are throwing up this compilation error:
ANSI C++ forbids cast to non-reference type used as lvalue.
I beleive it's bacause DELETEP is expanding these lines to something
like:
delete (static_cast<EV_Menu_Action *> (tmp));
static_cast<EV_Menu_Action *> (tmp) = 0; // This is not legal C++.
The solution is to change these lines to either:
EV_Menu_Action tmp2 = static_cast<EV_Menu_Action *> (tmp);
// We need tmp2 becausing passing a cast into DELETEP causes invalid C+
+ code
// to be generated.
DELETEP(tmp2);
or simply:
DELETEP(tmp); // I think this is legal and non-leaky.
I haven't posted a patch. because I couldn't decide which solution was
the most 'correct' or understandable.
Jamie.
This archive was generated by hypermail 2b25 : Tue Apr 17 2001 - 13:43:37 CDT