mirror of
https://github.com/znc/znc.git
synced 2026-07-06 18:01:21 +02:00
modperl & modpython: fix GetType() at module construction time
This commit is contained in:
@@ -30,8 +30,8 @@ class CPerlModule : public CModule {
|
||||
VWebSubPages* _GetSubPages();
|
||||
public:
|
||||
CPerlModule(CUser* pUser, CIRCNetwork* pNetwork, const CString& sModName, const CString& sDataPath,
|
||||
SV* perlObj)
|
||||
: CModule(nullptr, pUser, pNetwork, sModName, sDataPath) {
|
||||
CModInfo::EModuleType eType, SV* perlObj)
|
||||
: CModule(nullptr, pUser, pNetwork, sModName, sDataPath, eType) {
|
||||
m_perlObj = newSVsv(perlObj);
|
||||
}
|
||||
SV* GetPerlObj() {
|
||||
|
||||
@@ -111,7 +111,7 @@ sub LoadModule {
|
||||
$modrefcount{$modname}++;
|
||||
$datapath = $datapath->GetPerlStr;
|
||||
$datapath =~ s/\.pm$//;
|
||||
my $cmod = ZNC::CPerlModule->new($user, $network, $modname, $datapath, $pmod);
|
||||
my $cmod = ZNC::CPerlModule->new($user, $network, $modname, $datapath, $type, $pmod);
|
||||
my %nv;
|
||||
tie %nv, 'ZNC::ModuleNV', $cmod;
|
||||
$pmod->{_cmod} = $cmod;
|
||||
@@ -119,7 +119,6 @@ sub LoadModule {
|
||||
$cmod->SetDescription($pmod->description);
|
||||
$cmod->SetArgs($args);
|
||||
$cmod->SetModPath($modpath);
|
||||
$cmod->SetType($type);
|
||||
push @allmods, $pmod;
|
||||
$container->push_back($cmod);
|
||||
my $x = '';
|
||||
|
||||
@@ -32,8 +32,8 @@ class CPyModule : public CModule {
|
||||
VWebSubPages* _GetSubPages();
|
||||
public:
|
||||
CPyModule(CUser* pUser, CIRCNetwork* pNetwork, const CString& sModName, const CString& sDataPath,
|
||||
PyObject* pyObj, CModPython* pModPython)
|
||||
: CModule(nullptr, pUser, pNetwork, sModName, sDataPath) {
|
||||
CModInfo::EModuleType eType, PyObject* pyObj, CModPython* pModPython)
|
||||
: CModule(nullptr, pUser, pNetwork, sModName, sDataPath, eType) {
|
||||
m_pyObj = pyObj;
|
||||
Py_INCREF(pyObj);
|
||||
m_pModPython = pModPython;
|
||||
@@ -145,8 +145,8 @@ static inline CPyModule* AsPyModule(CModule* p) {
|
||||
return dynamic_cast<CPyModule*>(p);
|
||||
}
|
||||
|
||||
inline CPyModule* CreatePyModule(CUser* pUser, CIRCNetwork* pNetwork, const CString& sModName, const CString& sDataPath, PyObject* pyObj, CModPython* pModPython) {
|
||||
return new CPyModule(pUser, pNetwork, sModName, sDataPath, pyObj, pModPython);
|
||||
inline CPyModule* CreatePyModule(CUser* pUser, CIRCNetwork* pNetwork, const CString& sModName, const CString& sDataPath, CModInfo::EModuleType eType, PyObject* pyObj, CModPython* pModPython) {
|
||||
return new CPyModule(pUser, pNetwork, sModName, sDataPath, eType, pyObj, pModPython);
|
||||
}
|
||||
|
||||
class CPyTimer : public CTimer {
|
||||
|
||||
@@ -538,12 +538,11 @@ def load_module(modname, args, module_type, user, network, retmsg, modpython):
|
||||
return 1
|
||||
|
||||
module = cl()
|
||||
module._cmod = CreatePyModule(user, network, modname, datapath, module, modpython)
|
||||
module._cmod = CreatePyModule(user, network, modname, datapath, module_type, module, modpython)
|
||||
module.nv = ModuleNV(module._cmod)
|
||||
module.SetDescription(cl.description)
|
||||
module.SetArgs(args)
|
||||
module.SetModPath(pymodule.__file__)
|
||||
module.SetType(module_type)
|
||||
_py_modules.add(module)
|
||||
|
||||
if module_type == CModInfo.UserModule:
|
||||
|
||||
Reference in New Issue
Block a user