[geany/geany-plugins] d22d0a: Revert "Auto-close: fix possible crash at exit"

Pavel Roschin git-noreply at xxxxx
Mon Sep 8 18:07:29 UTC 2014


Branch:      refs/heads/master
Author:      Pavel Roschin <roshin at scriptumplus.ru>
Committer:   Pavel Roschin <roshin at scriptumplus.ru>
Date:        Fri, 02 May 2014 18:36:26 UTC
Commit:      d22d0ace38a99713460c82687dd933f8eca73213
             https://github.com/geany/geany-plugins/commit/d22d0ace38a99713460c82687dd933f8eca73213

Log Message:
-----------
Revert "Auto-close: fix possible crash at exit"

This reverts commit 4c4bcb5c2fa498b5f0bcefa20822dd252c4c0c8f.

Conflicts:
	autoclose/src/autoclose.c


Modified Paths:
--------------
    autoclose/src/autoclose.c

Modified: autoclose/src/autoclose.c
58 lines changed, 23 insertions(+), 35 deletions(-)
===================================================================
@@ -43,7 +43,7 @@ GeanyPlugin	*geany_plugin;
 GeanyData	*geany_data;
 GeanyFunctions	*geany_functions;
 
-PLUGIN_VERSION_CHECK(216)
+PLUGIN_VERSION_CHECK(218)
 PLUGIN_SET_TRANSLATABLE_INFO(
 	LOCALEDIR,
 	GETTEXT_PACKAGE,
@@ -83,7 +83,6 @@ typedef struct {
 static AutocloseInfo *ac_info = NULL;
 
 typedef struct {
-	gulong notify_handler[2];
 	/* used to place the caret after autoclosed items on tab (similar to eclipse) */
 	gint jump_on_tab;
 	/* used to reset jump_on_tab when needed */
@@ -798,7 +797,6 @@ on_sci_notify(ScintillaObject *sci, gint scn, SCNotification *nt, gpointer user_
 	data->last_line = new_line;
 }
 
-
 static void
 on_document_open(GObject *obj, GeanyDocument *doc, gpointer user_data)
 {
@@ -808,42 +806,15 @@ on_document_open(GObject *obj, GeanyDocument *doc, gpointer user_data)
 
 	sci = doc->editor->sci;
 	data = g_new0(AutocloseUserData, 1);
-	g_return_if_fail(data);
 	data->doc = doc;
-	data->notify_handler[0] = g_signal_connect(G_OBJECT(sci), "sci-notify",
-					G_CALLBACK(on_sci_notify), data);
-	data->notify_handler[1] = g_signal_connect(G_OBJECT(sci), "key-press-event",
-					G_CALLBACK(on_key_press), data);
+	plugin_signal_connect(geany_plugin, G_OBJECT(sci), "sci-notify",
+		    FALSE, G_CALLBACK(on_sci_notify), data);
+	plugin_signal_connect(geany_plugin, G_OBJECT(sci), "key-press-event",
+			FALSE, G_CALLBACK(on_key_press), data);
 	/* This will free the data when the sci is destroyed */
 	g_object_set_data_full(G_OBJECT(sci), "autoclose-userdata", data, g_free);
 }
 
-static void
-autoclose_handlers_cleanup(void)
-{
-	gint i;
-
-	foreach_document(i)
-	{
-		gint j;
-		gpointer data;
-		ScintillaObject *sci;
-		AutocloseUserData *autoclose_data;
-
-		sci = documents[i]->editor->sci;
-		data = g_object_steal_data(G_OBJECT(sci), "autoclose-userdata");
-		if (!data)
-			continue;
-		autoclose_data = (AutocloseUserData*)data;
-		for (j = 0; j < 2; j++)
-		{
-			gulong handler = autoclose_data->notify_handler[j];
-			g_signal_handler_disconnect(sci, handler);
-		}
-		g_free(data);
-	}
-}
-
 PluginCallback plugin_callbacks[] =
 {
 	{ "document-open",  (GCallback) &on_document_open, FALSE, NULL },
@@ -913,6 +884,7 @@ void
 plugin_init(G_GNUC_UNUSED GeanyData *data)
 {
 	guint i;
+
 	foreach_document(i)
 	{
 		on_document_open(NULL, documents[i], NULL);
@@ -1124,11 +1096,27 @@ plugin_configure(GtkDialog *dialog)
 	return scrollbox;
 }
 
+static void
+autoclose_cleanup(void)
+{
+	guint i;
+
+	foreach_document(i)
+	{
+		gpointer data;
+		ScintillaObject *sci;
+
+		sci = documents[i]->editor->sci;
+		data = g_object_steal_data(G_OBJECT(sci), "autoclose-userdata");
+		g_free(data);
+	}
+}
+
 /* Called by Geany before unloading the plugin. */
 void
 plugin_cleanup(void)
 {
-	autoclose_handlers_cleanup();
+	autoclose_cleanup();
 	g_free(ac_info->config_file);
 	g_free(ac_info);
 }



--------------
This E-Mail was brought to you by github_commit_mail.py (Source: https://github.com/geany/infrastructure).


More information about the Plugins-Commits mailing list