summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/analysis/loading.c7
-rw-r--r--src/core/global.c4
-rw-r--r--src/gui/editor.c8
-rw-r--r--src/gui/menus/file.c6
-rw-r--r--src/gui/menus/project.c11
5 files changed, 26 insertions, 10 deletions
diff --git a/src/analysis/loading.c b/src/analysis/loading.c
index 700a03f..f8dc2c3 100644
--- a/src/analysis/loading.c
+++ b/src/analysis/loading.c
@@ -368,9 +368,14 @@ void g_delayed_study_preload_only(GDelayedStudy *dstudy)
void qck_study_new_content(GBinContent *content, ProjectContentState state)
{
+ GStudyProject *project; /* Projet courant */
GDelayedStudy *dstudy; /* Etude à conduire */
- dstudy = g_delayed_study_new(get_current_project(), content, state);
+ project = get_current_project();
+
+ dstudy = g_delayed_study_new(project, content, state);
+
+ g_object_unref(G_OBJECT(project));
study_new_content(dstudy);
diff --git a/src/core/global.c b/src/core/global.c
index c5f25c1..2185c3a 100644
--- a/src/core/global.c
+++ b/src/core/global.c
@@ -121,6 +121,10 @@ void set_current_project(GStudyProject *project)
GStudyProject *get_current_project(void)
{
+ assert(_project != NULL);
+
+ g_object_ref(G_OBJECT(_project));
+
return _project;
}
diff --git a/src/gui/editor.c b/src/gui/editor.c
index d1f90d5..11c7f06 100644
--- a/src/gui/editor.c
+++ b/src/gui/editor.c
@@ -421,7 +421,6 @@ static gboolean on_delete_editor(GtkWidget *widget, GdkEvent *event, gpointer da
result = FALSE;
project = get_current_project();
- if (project == NULL) goto ode_no_project;
if (g_study_project_get_filename(project) == NULL)
{
@@ -454,7 +453,7 @@ static gboolean on_delete_editor(GtkWidget *widget, GdkEvent *event, gpointer da
}
- ode_no_project:
+ g_object_unref(G_OBJECT(project));
return result;
@@ -476,11 +475,6 @@ static gboolean on_delete_editor(GtkWidget *widget, GdkEvent *event, gpointer da
static void on_destroy_editor(GtkWidget *widget, GObject *ref)
{
- GStudyProject *project; /* Projet courant */
-
- project = get_current_project();
- if (project != NULL) g_object_unref(G_OBJECT(project));
-
/* Fermeture propre */
/* ... */
diff --git a/src/gui/menus/file.c b/src/gui/menus/file.c
index c0c031c..9c0b218 100644
--- a/src/gui/menus/file.c
+++ b/src/gui/menus/file.c
@@ -185,6 +185,8 @@ static void mcb_file_open_project(GtkMenuItem *menuitem, gpointer unused)
gtk_file_chooser_set_filename(GTK_FILE_CHOOSER(dialog),
g_study_project_get_filename(project));
+ g_object_unref(G_OBJECT(project));
+
if (gtk_dialog_run(GTK_DIALOG(dialog)) == GTK_RESPONSE_ACCEPT)
{
filename = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(dialog));
@@ -235,6 +237,8 @@ static void mcb_file_save_project(GtkMenuItem *menuitem, gpointer unused)
else
mcb_file_save_project_as(menuitem, NULL);
+ g_object_unref(G_OBJECT(project));
+
}
@@ -280,6 +284,8 @@ static void mcb_file_save_project_as(GtkMenuItem *menuitem, gpointer unused)
}
+ g_object_unref(G_OBJECT(project));
+
gtk_widget_destroy(dialog);
}
diff --git a/src/gui/menus/project.c b/src/gui/menus/project.c
index 5d027a0..424a506 100644
--- a/src/gui/menus/project.c
+++ b/src/gui/menus/project.c
@@ -202,6 +202,8 @@ static void mcb_project_add_shellcode(GtkMenuItem *menuitem, GMenuBar *bar)
}
+ g_object_unref(G_OBJECT(project));
+
#if 0
GtkWidget *dialog; /* Boîte à afficher */
char *dir; /* Répertoire courant */
@@ -262,6 +264,7 @@ static void mcb_project_add_shellcode(GtkMenuItem *menuitem, GMenuBar *bar)
static void mcb_project_add_binary_file(GtkMenuItem *menuitem, GMenuBar *bar)
{
GtkWidget *dialog; /* Boîte à afficher */
+ GStudyProject *project; /* Projet courant */
char *dir; /* Répertoire courant */
gchar *filename; /* Nom du fichier à intégrer */
GBinContent *content; /* Contenu binaire à charger */
@@ -273,14 +276,18 @@ static void mcb_project_add_binary_file(GtkMenuItem *menuitem, GMenuBar *bar)
_("_Open"), GTK_RESPONSE_ACCEPT,
NULL);
- if (g_study_project_get_filename(get_current_project()) != NULL)
+ project = get_current_project();
+
+ if (g_study_project_get_filename(project) != NULL)
{
- dir = strdup(g_study_project_get_filename(get_current_project()));
+ dir = strdup(g_study_project_get_filename(project));
dir = dirname(dir);
gtk_file_chooser_set_current_folder(GTK_FILE_CHOOSER(dialog), dir);
free(dir);
}
+ g_object_unref(G_OBJECT(project));
+
if (gtk_dialog_run(GTK_DIALOG(dialog)) == GTK_RESPONSE_ACCEPT)
{
filename = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(dialog));