Mercurial > pidgin
view libpurple/plugins/tcl/tcl_purple.h @ 28442:e0223ad82ca1
account: Don't leak the account->privacy / account->deny lists.
Multiple similar to:
==21150== 412 (32 direct, 380 indirect) bytes in 2 blocks are definitely lost in loss record 12,416 of 13,348
==21150== at 0x4C221A7: malloc (vg_replace_malloc.c:195)
==21150== by 0x90AA552: g_malloc (gmem.c:131)
==21150== by 0x90C03C7: g_slice_alloc (gslice.c:824)
==21150== by 0x90C0E05: g_slist_append (gslist.c:117)
==21150== by 0x93AE56F: purple_privacy_permit_add (privacy.c:58)
author | Paul Aurich <paul@darkrain42.org> |
---|---|
date | Mon, 26 Oct 2009 04:21:28 +0000 |
parents | 506f0f7f4f21 |
children | 44f53d3fc54f |
line wrap: on
line source
/** * @file tcl_purple.h Purple Tcl definitions * * purple * * Copyright (C) 2003 Ethan Blanton <eblanton@cs.purdue.edu> * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA */ #ifndef _PURPLE_TCL_PURPLE_H_ #define _PURPLE_TCL_PURPLE_H_ #include <tcl.h> #include "internal.h" #include "cmds.h" #include "plugin.h" #include "value.h" #include "stringref.h" struct tcl_signal_handler { Tcl_Obj *signal; Tcl_Interp *interp; void *instance; Tcl_Obj *namespace; /* These following two are temporary during setup */ Tcl_Obj *args; Tcl_Obj *proc; PurpleValue *returntype; int nargs; PurpleValue **argtypes; }; struct tcl_cmd_handler { int id; Tcl_Obj *cmd; Tcl_Interp *interp; Tcl_Obj *namespace; /* These are temporary during setup */ const char *args; int priority; int flags; const char *prpl_id; Tcl_Obj *proc; const char *helpstr; int nargs; }; extern PurplePlugin *_tcl_plugin; /* Capitalized this way because these are "types" */ extern PurpleStringref *PurpleTclRefAccount; extern PurpleStringref *PurpleTclRefConnection; extern PurpleStringref *PurpleTclRefConversation; extern PurpleStringref *PurpleTclRefPointer; extern PurpleStringref *PurpleTclRefPlugin; extern PurpleStringref *PurpleTclRefPresence; extern PurpleStringref *PurpleTclRefStatus; extern PurpleStringref *PurpleTclRefStatusAttr; extern PurpleStringref *PurpleTclRefStatusType; extern PurpleStringref *PurpleTclRefXfer; extern PurpleStringref *PurpleTclRefHandle; PurplePlugin *tcl_interp_get_plugin(Tcl_Interp *interp); void tcl_signal_init(void); void tcl_signal_handler_free(struct tcl_signal_handler *handler); void tcl_signal_cleanup(Tcl_Interp *interp); gboolean tcl_signal_connect(struct tcl_signal_handler *handler); void tcl_signal_disconnect(void *instance, const char *signal, Tcl_Interp *interp); void tcl_cmd_init(void); void tcl_cmd_handler_free(struct tcl_cmd_handler *handler); void tcl_cmd_cleanup(Tcl_Interp *interp); PurpleCmdId tcl_cmd_register(struct tcl_cmd_handler *handler); void tcl_cmd_unregister(PurpleCmdId id, Tcl_Interp *interp); void purple_tcl_ref_init(void); void *purple_tcl_ref_get(Tcl_Interp *interp, Tcl_Obj *obj, PurpleStringref *type); Tcl_Obj *purple_tcl_ref_new(PurpleStringref *type, void *value); Tcl_ObjCmdProc tcl_cmd_account; Tcl_ObjCmdProc tcl_cmd_signal_connect; Tcl_ObjCmdProc tcl_cmd_buddy; Tcl_ObjCmdProc tcl_cmd_cmd; Tcl_ObjCmdProc tcl_cmd_connection; Tcl_ObjCmdProc tcl_cmd_conversation; Tcl_ObjCmdProc tcl_cmd_core; Tcl_ObjCmdProc tcl_cmd_debug; Tcl_ObjCmdProc tcl_cmd_notify; Tcl_ObjCmdProc tcl_cmd_plugins; Tcl_ObjCmdProc tcl_cmd_prefs; Tcl_ObjCmdProc tcl_cmd_presence; Tcl_ObjCmdProc tcl_cmd_savedstatus; Tcl_ObjCmdProc tcl_cmd_send_im; Tcl_ObjCmdProc tcl_cmd_signal; Tcl_ObjCmdProc tcl_cmd_status; Tcl_ObjCmdProc tcl_cmd_status_attr; Tcl_ObjCmdProc tcl_cmd_status_type; Tcl_ObjCmdProc tcl_cmd_unload; #endif /* _PURPLE_TCL_PURPLE_H_ */