aboutsummaryrefslogtreecommitdiffstats
path: root/src/modules/system
diff options
context:
space:
mode:
authorGravatar Alexey Uzhva2007-04-22 08:11:23 +0000
committerGravatar Alexey Uzhva2007-04-22 08:11:23 +0000
commita1fe1cc1f9882fd926cc147d10870d487094c1fd (patch)
tree824b0389a62a872bd880b039ee8edfa5693cc82c /src/modules/system
parentsmall fix (diff)
downloadKVIrc-a1fe1cc1f9882fd926cc147d10870d487094c1fd.tar.gz
KVIrc-a1fe1cc1f9882fd926cc147d10870d487094c1fd.tar.bz2
KVIrc-a1fe1cc1f9882fd926cc147d10870d487094c1fd.zip
fixed plugin stuff
git-svn-id: https://svn.kvirc.de/svn/trunk/kvirc@525 17fca916-40b9-46aa-a4ea-0a15b648b75c
Diffstat (limited to 'src/modules/system')
-rw-r--r--src/modules/system/plugin.cpp25
1 files changed, 16 insertions, 9 deletions
diff --git a/src/modules/system/plugin.cpp b/src/modules/system/plugin.cpp
index dbe40e300..9d91c12b4 100644
--- a/src/modules/system/plugin.cpp
+++ b/src/modules/system/plugin.cpp
@@ -193,6 +193,7 @@ KviPluginManager::~KviPluginManager()
bool KviPluginManager::pluginCall(KviKvsModuleFunctionCall *c)
{
+ // /echo $system.call("traffic.dll",about)
QString szPluginPath; //contains full path and plugin name like "c:/plugin.dll"
QString szFunctionName;
@@ -225,8 +226,6 @@ bool KviPluginManager::pluginCall(KviKvsModuleFunctionCall *c)
{
iArgc = c->parameterCount() - 2;
}
-
-
if (iArgc > 0)
{
@@ -264,12 +263,12 @@ bool KviPluginManager::pluginCall(KviKvsModuleFunctionCall *c)
} else {
//Avoid using unfilled variables
ppArgv = 0;
+ pArgvBuffer = 0;
iArgc = 0;
}
//Preparing return buffer
char * returnBuffer;
-
KviPlugin * plugin;
plugin = getPlugin(szPluginPath);
@@ -282,16 +281,23 @@ bool KviPluginManager::pluginCall(KviKvsModuleFunctionCall *c)
}
if (r > 0)
{
- c->returnValue()->setString(returnBuffer);
+ c->returnValue()->setString(QString::fromLocal8Bit(returnBuffer));
}
+
//Clean up
- free(pArgvBuffer);
- free(ppArgv);
- if (!plugin->pfree(returnBuffer))
+ if(pArgvBuffer) free(pArgvBuffer);
+ if(ppArgv) free(ppArgv);
+ if(returnBuffer)
{
- c->warning(__tr2qs("The plugin has no function to free memory. Can result in Memory Leaks!"));
+ if (!plugin->pfree(returnBuffer))
+ {
+ c->warning(__tr2qs("The plugin has no function to free memory. Can result in Memory Leaks!"));
+ }
}
+
+
+
return true;
}
@@ -331,7 +337,8 @@ void KviPluginManager::unloadAll(bool forced)
bool KviPluginManager::findPlugin(QString& szPath)
{
- QString szFileName=KviFileUtils::extractFileName(szPath);
+ QString szFileName(KviFileUtils::extractFileName(szPath));
+// szFileName.detach();
if(KviFileUtils::isAbsolutePath(szPath) && KviFileUtils::fileExists(szPath))
{
// Ok,