aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorGravatar Szymon Tomasz Stefanek2010-08-26 17:48:38 +0000
committerGravatar Szymon Tomasz Stefanek2010-08-26 17:48:38 +0000
commit888c3aa9426cfe893e56f0d4c98932ec8b1d3d3e (patch)
tree4101395713ef5b9b8d41ed896e54258aacdd847c /src
parentAdded the trayicon kvs class (diff)
downloadKVIrc-888c3aa9426cfe893e56f0d4c98932ec8b1d3d3e.tar.gz
KVIrc-888c3aa9426cfe893e56f0d4c98932ec8b1d3d3e.tar.bz2
KVIrc-888c3aa9426cfe893e56f0d4c98932ec8b1d3d3e.zip
Yet another fix related to object deletion
git-svn-id: https://svn.kvirc.de/svn/trunk/kvirc@4937 17fca916-40b9-46aa-a4ea-0a15b648b75c
Diffstat (limited to 'src')
-rw-r--r--src/kvirc/kvs/kvi_kvs_object_class.cpp18
-rw-r--r--src/modules/objects/class_treewidgetitem.cpp6
2 files changed, 15 insertions, 9 deletions
diff --git a/src/kvirc/kvs/kvi_kvs_object_class.cpp b/src/kvirc/kvs/kvi_kvs_object_class.cpp
index a5cb9f2ce..1fcdccffb 100644
--- a/src/kvirc/kvs/kvi_kvs_object_class.cpp
+++ b/src/kvirc/kvs/kvi_kvs_object_class.cpp
@@ -123,31 +123,37 @@ void KviKvsObjectClass::registerStandardFalseReturnFunctionHandler(const QString
KviKvsObject * KviKvsObjectClass::allocateInstance(KviKvsObject * pParent,const QString &szName,KviKvsRunTimeContext * pContext,KviKvsVariantList * pParams)
{
- if(!m_allocProc)return 0;
+ if(!m_allocProc)
+ return 0;
+
KviKvsObject * pObject = m_allocProc(this,pParent,szName);
- if(!pObject)return 0;
+ if(!pObject)
+ return 0;
- KviKvsVariant * v=pParams->first(); // FIXME: what the hell is this ?
if(!pObject->init(pContext,pParams))
{
// internal init failure : abort
- delete pObject;
+ pObject->dieNow();
return 0;
}
- //KviKvsVariant ret;
+ // copy params
KviKvsVariantList copy;
copy.setAutoDelete(false);
+
+ KviKvsVariant * v = pParams->first();
+
while(v)
{
copy.append(v);
v = pParams->next();
}
KviKvsVariant ret;
+
if(!pObject->callFunction(pObject,"constructor",QString(),pContext,&ret,&copy))
{
// ops...constructor failed (script error!)
- delete pObject;
+ pObject->dieNow();
return 0;
}
diff --git a/src/modules/objects/class_treewidgetitem.cpp b/src/modules/objects/class_treewidgetitem.cpp
index 11f455e0a..49cfdae59 100644
--- a/src/modules/objects/class_treewidgetitem.cpp
+++ b/src/modules/objects/class_treewidgetitem.cpp
@@ -178,8 +178,8 @@ bool KviKvsObject_treewidgetitem::init(KviKvsRunTimeContext * pContext,KviKvsVar
{
if (!parentObject())
{
- pContext->error(__tr2qs_ctx("The listviewitem cannot be parentless","objects"));
- return false;
+ pContext->error(__tr2qs_ctx("The listviewitem cannot be parentless","objects"));
+ return false;
}
if(parentObject()->inheritsClass("listviewitem"))
{
@@ -188,7 +188,7 @@ bool KviKvsObject_treewidgetitem::init(KviKvsRunTimeContext * pContext,KviKvsVar
if(parentObject()->inheritsClass("listview"))
m_pTreeWidgetItem = new KviKvsStandardTreeWidgetItem(this,((QTreeWidget *)parentScriptWidget()));
else {
- pContext->error(__tr2qs_ctx("The parent of the listwidgetitem must be either another listwidgetitem or a listwidget","objects"));
+ pContext->error(__tr2qs_ctx("The parent of the listwidgetitem must be either another listwidgetitem or a listwidget","objects"));
return false;
}
}