diff options
| author | 2007-04-22 08:11:23 +0000 | |
|---|---|---|
| committer | 2007-04-22 08:11:23 +0000 | |
| commit | a1fe1cc1f9882fd926cc147d10870d487094c1fd (patch) | |
| tree | 824b0389a62a872bd880b039ee8edfa5693cc82c /src/modules/system | |
| parent | small fix (diff) | |
| download | KVIrc-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.cpp | 25 |
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, |
