aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--include/ILexer.h2
-rw-r--r--src/ScintillaBase.cxx12
2 files changed, 1 insertions, 13 deletions
diff --git a/include/ILexer.h b/include/ILexer.h
index ee83939ea..991c981e8 100644
--- a/include/ILexer.h
+++ b/include/ILexer.h
@@ -137,7 +137,7 @@ ILexer5 *lex;
public:
LexillaLexer(ILexer5 *lex_) : lex(lex_) {}
virtual ~LexillaLexer() {}
- void SCI_METHOD Release() override { lex->Release(); };
+ void SCI_METHOD Release() override { lex->Release(); delete this; };
int SCI_METHOD Version() const override { return lex->Version(); }
const char * SCI_METHOD PropertyNames() override { return lex->PropertyNames(); }
int SCI_METHOD PropertyType(const char *name) override { return lex->PropertyType(name); }
diff --git a/src/ScintillaBase.cxx b/src/ScintillaBase.cxx
index 0ef8a5b30..92d8577a8 100644
--- a/src/ScintillaBase.cxx
+++ b/src/ScintillaBase.cxx
@@ -604,10 +604,6 @@ LexState::LexState(Document *pdoc_) : LexInterface(pdoc_) {
LexState::~LexState() {
if (instance) {
instance->Release();
- LexillaLexer *iLexer5 = dynamic_cast<LexillaLexer *>(instance);
- if (iLexer5) {
- delete iLexer5;
- }
instance = nullptr;
}
}
@@ -615,10 +611,6 @@ LexState::~LexState() {
void LexState::SetInstance(ILexer *instance_) {
if (instance) {
instance->Release();
- LexillaLexer *iLexer5 = dynamic_cast<LexillaLexer *>(instance);
- if (iLexer5) {
- delete iLexer5;
- }
instance = nullptr;
}
instance = instance_;
@@ -636,10 +628,6 @@ void LexState::SetLexerModule(const LexerModule *lex) {
if (lex != lexCurrent) {
if (instance) {
instance->Release();
- LexillaLexer *iLexer5 = dynamic_cast<LexillaLexer *>(instance);
- if (iLexer5) {
- delete iLexer5;
- }
instance = nullptr;
}
interfaceVersion = lvOriginal;