diff options
| author | 2015-08-27 16:18:24 +0200 | |
|---|---|---|
| committer | 2015-08-27 16:18:24 +0200 | |
| commit | ed0b43d99fefed68fccbf4877e2a27da7a2ad4d4 (patch) | |
| tree | 7e0093f9c4022a61d6925173ad288f1e7e99d20b | |
| parent | More work on theme packing (diff) | |
| download | KVIrc-ed0b43d99fefed68fccbf4877e2a27da7a2ad4d4.tar.gz KVIrc-ed0b43d99fefed68fccbf4877e2a27da7a2ad4d4.tar.bz2 KVIrc-ed0b43d99fefed68fccbf4877e2a27da7a2ad4d4.zip | |
Fix a bug in KVS parser related to local/global variables
| -rw-r--r-- | src/kvirc/kvs/KviKvsHash.h | 2 | ||||
| -rw-r--r-- | src/kvirc/kvs/KviKvsScript.cpp | 3 | ||||
| -rw-r--r-- | src/kvirc/kvs/parser/KviKvsParser.cpp | 19 |
3 files changed, 17 insertions, 7 deletions
diff --git a/src/kvirc/kvs/KviKvsHash.h b/src/kvirc/kvs/KviKvsHash.h index ff9b545e3..c8638d83b 100644 --- a/src/kvirc/kvs/KviKvsHash.h +++ b/src/kvirc/kvs/KviKvsHash.h @@ -107,6 +107,8 @@ public: */ bool isEmpty() const { return m_pDict->isEmpty(); }; + void clear(){ m_pDict->clear(); }; + /** * \brief Returns the size of the hash * \return kvs_uint_t diff --git a/src/kvirc/kvs/KviKvsScript.cpp b/src/kvirc/kvs/KviKvsScript.cpp index e24e661dd..89514e0dd 100644 --- a/src/kvirc/kvs/KviKvsScript.cpp +++ b/src/kvirc/kvs/KviKvsScript.cpp @@ -254,7 +254,8 @@ bool KviKvsScript::parse(KviWindow * pOutput, int iRunFlags) // parse never blocks int iFlags = iRunFlags & AssumeLocals ? KviKvsParser::AssumeLocals : 0; - if(iRunFlags & Pedantic)iFlags |= KviKvsParser::Pedantic; + if(iRunFlags & Pedantic) + iFlags |= KviKvsParser::Pedantic; switch(m_pData->m_eType) { diff --git a/src/kvirc/kvs/parser/KviKvsParser.cpp b/src/kvirc/kvs/parser/KviKvsParser.cpp index cfc152897..055eae9e7 100644 --- a/src/kvirc/kvs/parser/KviKvsParser.cpp +++ b/src/kvirc/kvs/parser/KviKvsParser.cpp @@ -45,7 +45,8 @@ KviKvsParser::KviKvsParser(KviKvsScript * pScript,KviWindow * pOutputWindow) KviKvsParser::~KviKvsParser() { - if(m_pGlobals)delete m_pGlobals; + if(m_pGlobals) + delete m_pGlobals; } void KviKvsParser::init() @@ -136,7 +137,8 @@ KviKvsTreeNodeInstruction * KviKvsParser::parse(const QChar * pBuffer,int iFlags m_iFlags = iFlags; m_bError = false; - if(m_pGlobals)m_pGlobals->clear(); // this shouldn't be needed since this is a one time parser + if(m_pGlobals) + m_pGlobals->clear(); // this shouldn't be needed since this is a one time parser m_pBuffer = pBuffer; m_ptr = pBuffer; @@ -154,7 +156,8 @@ KviKvsTreeNodeInstruction * KviKvsParser::parseAsExpression(const QChar * pBuffe m_iFlags = iFlags; m_bError = false; - if(m_pGlobals)m_pGlobals->clear(); // this shouldn't be needed since this is a one time parser + if(m_pGlobals) + m_pGlobals->clear(); // this shouldn't be needed since this is a one time parser m_pBuffer = pBuffer; m_ptr = pBuffer; @@ -175,7 +178,8 @@ KviKvsTreeNodeInstruction * KviKvsParser::parseAsParameter(const QChar * pBuffer m_iFlags = iFlags; m_bError = false; - if(m_pGlobals)m_pGlobals->clear(); // this shouldn't be needed since this is a one time parser + if(m_pGlobals) + m_pGlobals->clear(); // this shouldn't be needed since this is a one time parser m_pBuffer = pBuffer; m_ptr = pBuffer; @@ -2746,16 +2750,19 @@ KviKvsTreeNodeVariable * KviKvsParser::parsePercent(bool bInObjScope) if(bInObjScope) return new KviKvsTreeNodeObjectField(pBegin,szIdentifier); + // Check if explicitly declared as global if(m_pGlobals) { - if(m_pGlobals->find(szIdentifier))return new KviKvsTreeNodeGlobalVariable(pBegin,szIdentifier); + if(m_pGlobals->find(szIdentifier)) + return new KviKvsTreeNodeGlobalVariable(pBegin,szIdentifier); } if(m_iFlags & AssumeLocals) return new KviKvsTreeNodeLocalVariable(pBegin,szIdentifier); - if(pIdBegin->category() & QChar::Letter_Uppercase) + if(pIdBegin->category() == QChar::Letter_Uppercase) { + //qDebug("Variable %s is global",szIdentifier.toUtf8().data()); //if(m_iFlags & Pedantic) // warning(pIdBegin,__tr2qs_ctx("Declaring global variables with an uppercase letter is deprecated. Global variables should be declared with 'global'","kvs")); return new KviKvsTreeNodeGlobalVariable(pBegin,szIdentifier); |
