mirror of
https://github.com/moparisthebest/hexchat
synced 2024-11-29 04:32:15 -05:00
python: Hold a reference to plugin instead of dereferencing hook to get to it.
hook might have been free'd by the callback via hexchat.unhook().
This commit is contained in:
parent
631664645d
commit
5c9652bf13
@ -498,18 +498,20 @@ Callback_Command(char *word[], char *word_eol[], void *userdata)
|
|||||||
PyObject *retobj;
|
PyObject *retobj;
|
||||||
PyObject *word_list, *word_eol_list;
|
PyObject *word_list, *word_eol_list;
|
||||||
int ret = 0;
|
int ret = 0;
|
||||||
|
PyObject *plugin;
|
||||||
|
|
||||||
BEGIN_PLUGIN(hook->plugin);
|
plugin = hook->plugin;
|
||||||
|
BEGIN_PLUGIN(plugin);
|
||||||
|
|
||||||
word_list = Util_BuildList(word+1);
|
word_list = Util_BuildList(word+1);
|
||||||
if (word_list == NULL) {
|
if (word_list == NULL) {
|
||||||
END_PLUGIN(hook->plugin);
|
END_PLUGIN(plugin);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
word_eol_list = Util_BuildList(word_eol+1);
|
word_eol_list = Util_BuildList(word_eol+1);
|
||||||
if (word_eol_list == NULL) {
|
if (word_eol_list == NULL) {
|
||||||
Py_DECREF(word_list);
|
Py_DECREF(word_list);
|
||||||
END_PLUGIN(hook->plugin);
|
END_PLUGIN(plugin);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -528,7 +530,7 @@ Callback_Command(char *word[], char *word_eol[], void *userdata)
|
|||||||
PyErr_Print();
|
PyErr_Print();
|
||||||
}
|
}
|
||||||
|
|
||||||
END_PLUGIN(hook->plugin);
|
END_PLUGIN(plugin);
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
@ -548,6 +550,7 @@ Callback_Print(char *word[], void *userdata)
|
|||||||
int next = 0;
|
int next = 0;
|
||||||
int i;
|
int i;
|
||||||
int ret = 0;
|
int ret = 0;
|
||||||
|
PyObject *plugin;
|
||||||
|
|
||||||
/* Cut off the message identifier. */
|
/* Cut off the message identifier. */
|
||||||
word += 1;
|
word += 1;
|
||||||
@ -579,13 +582,14 @@ Callback_Print(char *word[], void *userdata)
|
|||||||
}
|
}
|
||||||
word_eol[i] = "";
|
word_eol[i] = "";
|
||||||
|
|
||||||
BEGIN_PLUGIN(hook->plugin);
|
plugin = hook->plugin;
|
||||||
|
BEGIN_PLUGIN(plugin);
|
||||||
|
|
||||||
word_list = Util_BuildList(word);
|
word_list = Util_BuildList(word);
|
||||||
if (word_list == NULL) {
|
if (word_list == NULL) {
|
||||||
g_free(word_eol_raw);
|
g_free(word_eol_raw);
|
||||||
g_free(word_eol);
|
g_free(word_eol);
|
||||||
END_PLUGIN(hook->plugin);
|
END_PLUGIN(plugin);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
word_eol_list = Util_BuildList(word_eol);
|
word_eol_list = Util_BuildList(word_eol);
|
||||||
@ -593,7 +597,7 @@ Callback_Print(char *word[], void *userdata)
|
|||||||
g_free(word_eol_raw);
|
g_free(word_eol_raw);
|
||||||
g_free(word_eol);
|
g_free(word_eol);
|
||||||
Py_DECREF(word_list);
|
Py_DECREF(word_list);
|
||||||
END_PLUGIN(hook->plugin);
|
END_PLUGIN(plugin);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -614,7 +618,7 @@ Callback_Print(char *word[], void *userdata)
|
|||||||
PyErr_Print();
|
PyErr_Print();
|
||||||
}
|
}
|
||||||
|
|
||||||
END_PLUGIN(hook->plugin);
|
END_PLUGIN(plugin);
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user